`
holdbelief
  • 浏览: 707498 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ActiveMQ实践:松耦合和ActiveMQ

    博客分类:
  • JMS
阅读更多

2010-10-28    作者:Bruce Snyder, Dejan Bosanac, Rob Davies     译者:张培颖   来源:TechTarget中国

导读:本文介绍了为什么要使用ActiveMQ以及松耦合、通信和ActiveMQ的关系和作用,笔者给出了具体实例,下面我们来具体看一下。

关键词:ActiveMQ 松耦合 紧耦合 消息中间件 MOM

 

【TechTarget中国原创】回到2003年,一群开源开发者聚在一起组成了Apache Geronimo。在这种情况下,他们发现没有一个很好的使用BSD风格许可证的消息中间件可用。因为Geronimo需要一个JMS实现J2EE兼容性,所以一些开发者开始探讨这种可能性。他们拥有大量的商业MOM经验,而且他们甚至之前已经创建了一些MOM,这些开发者打算创建下一代伟大的开源消息中间件。

  ActiveMQ其他的一些灵感来源于市场上的大多数MOM是商业化的这个事实,封闭源码,而且购买和支持的成本高昂。商业MOM的确在业务上很流行,但是很多业务并不能负担的起不合理的成本。这也进一步增加了创建一个开源替代物的积极性。使用Apache许可证的开源MOM确实有着市场潜力。Apache ActiveMQ随着时间进步。ActiveMQ打算作为JMS的标准,以供分布式应用之间的远程通信。为了更好地理解这个意思,最佳的做法就是回顾一下分布式应用设计,尤其是通信。

  松耦合和ActiveMQ

  ActiveMQ为应用架构提供了松耦合的好处。松耦合通常被引入到一个架构迁移到一个古典的紧耦合的远程过程调用(RPC)中。这样一个松耦合设计被认为是异步的,调用两个应用中的任何一个应用对另一个都没有影响;不相互依赖或者有时间要求。应用可以信任ActiveMQ有能力保障消息交付。因此,通常表述为应用发送消息是发送后自寻的。也就是他们把消息发给ActiveMQ,并不关心消息如何交付和什么时候交付。同样的,消费应用也不用关心消息来自哪里何以如何发送到ActiveMQ的。这对于在非均匀环境中来说尤其有用,这种环境中允许客户端使用不同的语言编写,甚至可能是不同的网格协议。ActiveMQ充当中间人,允许以异步的方式进行非均匀集成和交互。

  在考虑分布式应用设计的时候,应用耦合很重要。耦合引用两个或者多个应用或系统的依赖性。简单的理解耦合就是考虑从系统中任何应用改变对其他应用产生的影响,这种含义穿过架构中的其他应用作为性能被添加。改变一个应用会迫使所涉及的其他应用改变呢?如果回答是肯定的,这些应用就是紧耦合。然而,如果一个应用可以在不影响其他应用的情况下改变,这些应用就是松耦合的。对比松耦合,紧耦合应用很难维护。

  像COM、CORBA、DCE和EJB这样的技术使用的技术称之为远程过程调用(RPC),RPC被认为是紧耦合的。使用RPC,当一个应用调用另一个应用的时候,调用者是锁定的,直到被调用者返还会控制权。图一描述了这个概念。


图片

图一

  通信

  图一中的调用者是锁定的,直到被调用者返还会控制权。许多系统架构使用RPC,而且很成功。然而,是有这种紧耦合设计也有很多缺点,最显著的就是很高的维护费用需求,可谓一石激起千层浪。在另个应用见正确的时间是必要的。对于应用都必须在同时可用的这种需求从应用一到应用二,响应从应用二到应用一。这样的时间需求很难处理。对比这样设计中的紧耦合和松耦合,两个应用彼此完全不知道对方,如图二所示。


图片

图二

  图二中的应用一给MOM 发送了一个消息,可能过了一段时间,应用二从MOM收到一条消息。另个应用都不知道对方的存在,在两个应用之间也没有时间需求。这种单一风格的交互结果维护成本很低,因为一个应用改变对另一个没有影响。因此,松耦合应用在分布式应用设计中更具优势。

  试想在应用必须转移到另一个地点的这种改变。这种情况可能发生在新的硬件需求或简单的机器转移的时候。紧耦合的系统设计,这样的环境很难转移,因为所有应用片段必须经历断电。松耦合设计的应用,不同的系统片段可以独立的转移。假如应用一和应用二都有多个实例,每个实例都属于不同的机器中。ActiveMQ安装在另外完全独立于这两个应用的机器上。在这种场景中,这些实例都可以移动,而不影响彼此。实际上,ActiveMQ的多个实例被认为是中间件配置网络。它允许ActiveMQ实例不影响其他实例的情况下自由转移。这意味着这个架构中的任何片段可以在任何时间被维护,而无需影响这个系统。

  因此ActiveMQ为应用架构提供了一种不可思议的灵活性,松耦合的概念也成为现实。但是ActiveMQ应该在何时使用呢?欢迎继续关注。

分享到:
评论

相关推荐

    ActiveMQ实践入门指南

    在分布式系统架构中,**松耦合**是一个关键概念,ActiveMQ正是这一理念的典范实践。与传统的远程过程调用(RPC)模式相比,松耦合设计通过异步通信机制,降低了系统各组件间的依赖度,使得单一组件的变化不会立即影响...

    ActiveMQ入门

    - **设计理念**:通过支持异步通信模式,实现应用间的松耦合,从而降低系统的复杂度和维护成本。 #### 三、ActiveMQ 的核心概念:松耦合 **定义**:松耦合是指系统中各组件之间依赖程度较低的一种设计模式,其中...

    activemq

    - **松耦合架构**:CMS 采用松耦合架构,有助于创建跨平台且易于维护的企业级应用。 #### 五、开发前准备 - **安装 ActiveMQ-CPP 及 Winkeemq-cpp**:在开始开发之前,需要先安装这两个库。具体的安装步骤可以参考...

    activemq与spring整合源代码

    Spring是一个全面的企业级应用开发框架,它简化了Java EE应用的开发过程,通过依赖注入和面向切面编程,实现了松耦合和模块化。Spring还提供了丰富的模块,如数据访问、Web、测试等,其中Spring JMS模块专门用于集成...

    springMVC+activeMQ例子

    Spring MVC是一种模型-视图-控制器(Model-View-Controller)架构模式的实现,用于构建可维护性高、松耦合的Web应用程序。它将业务逻辑、数据处理与用户界面分离开来,提供了一个灵活的框架来处理HTTP请求、数据绑定...

    activemq-5.13.2 jar包

    ActiveMQ作为JMS提供者,允许开发者创建、发送、接收和读取消息,从而构建松耦合、可扩展的系统。 **ActiveMQ的关键特性:** 1. **多协议支持**:ActiveMQ支持多种消息协议,包括OpenWire、STOMP、AMQP、MQTT、WS-...

    ActiveMQ In Action精简版

    消息中间件是一种软件,用于在分布式系统中实现应用程序之间的异步通信,它可以提高系统的可扩展性、可靠性和松耦合度。JMS(Java Message Service)是Java平台上的一种消息中间件API,定义了生产者/消费者模型以及...

    apache-activemq-5.15.2

    通过使用JMS,开发者可以在应用程序之间传递数据,而无需两者之间有直接的交互,这有助于实现系统的松耦合和可扩展性。 Apache ActiveMQ作为JMS的实现,提供了以下关键功能: 1. **消息持久化**:ActiveMQ支持消息...

    Springboot和ActiveMQ的整合实例

    在IT行业中,Spring Boot和ActiveMQ的整合是一个常见的任务,特别是在构建分布式系统和微服务架构时。Spring Boot以其简化配置和快速开发的...通过理解和实践这些知识点,开发者可以构建出更健壮、更灵活的应用系统。

    ActiveMQ使用入门.pdf

    MOM中,消息发送者将消息发送给消息服务器,服务器将消息存储在队列中,然后在合适的时间转发给接收者,实现了发送与接收的异步、松耦合和一对多的特性。 ActiveMQ作为最早的JMS开源产品,提供了一个强大的消息传递...

    Spring与ActiveMQ整合完整案例

    在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,而ActiveMQ则是Apache组织提供的一个开源消息中间件,常用于实现...通过学习和实践这个案例,你可以掌握如何在自己的项目中运用这一技术,提升系统性能。

    39、ActiveMQ.pdf

    在本文中,我们将深入探讨ActiveMQ,这是一个广泛使用的开源消息中间件,属于Apache软件基金会的项目。ActiveMQ是基于Java的消息传递平台,...学习ActiveMQ并掌握其核心概念和实践,有助于提升个人在IT领域的专业素养。

    ActiveMQ5.14.3-linux,macOS版本 解压即可用版本

    通过JMS,应用程序可以发送和接收异步消息,实现松耦合的通信。 2. **消息模型**:ActiveMQ支持多种消息模式,包括点对点(Queue)和发布/订阅(Topic)模式。点对点模式中,消息被一个消费者接收并处理后即从队列...

    1、 ActiveMQ 安装1

    这款中间件允许应用程序通过发送和接收消息来进行异步通信,极大地提高了系统间的解耦合性和可扩展性。 在安装 ActiveMQ 之前,确保您已经安装了兼容的 JDK 版本。从提供的信息来看,从 ActiveMQ 5.0.0 至 5.15.0 ...

    ActiveMQ实例,源代码

    **ActiveMQ 深度解析与实践** ActiveMQ 是 Apache 软件基金会下的一个开源消息中间件项目,它是基于 Java Message Service (JMS) ...通过深入理解和实践源代码,我们可以更好地利用 ActiveMQ 提升系统的稳定性和性能。

    activeMQ5.9(jar).rar

    - **事件驱动架构**:发布/订阅模式适用于构建事件驱动的微服务架构,实现松耦合和可扩展性。 4. **安装与配置** - 解压"activeMQ5.9"压缩包,启动bin目录下的`activemq.bat`(Windows)或`./bin/activemq`...

    apache-activemq-5.15.9

    ActiveMQ 优点:  (1) 跨平台(JAVA编写与平台无关有... (3) 降低系统间模块的耦合度,解耦(消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和) (4) 对Spring的,软件扩展性好 (5) 自动重连功能

    activemq-5.16.0.zip

    1. **解耦组件**:当系统中有多个组件需要相互交互但不希望直接耦合时,ActiveMQ作为一个中间层,负责消息传递。 2. **批量处理**:将大批量的任务放入消息队列,由后台线程慢慢处理,避免阻塞用户界面。 3. **...

    activeMQ总结

    ActiveMQ 概述 Apache ActiveMQ 是一个强大的开源消息中间件,它遵循Java消息服务(JMS)1.1规范,适用于J2EE 1.4环境。...通过理解和掌握ActiveMQ,开发者可以更好地构建松耦合、可扩展的应用架构。

Global site tag (gtag.js) - Google Analytics