JMS和ActiveMQ介绍(1)_消息传送机制

JMS,java消息服务是由Sun提出的一套消息传送API规范,而ActiveMQ是一款开源的消息服务器产品,前一段在组内做过一次有关《JMS和ActiveMQ介绍》的技术分享,今天把幻灯片整理了一下,希望和大家多交流。

什么是消息传送机制

1幻灯片4
消息传送机制是在多个系统之间引入消息服务器,由消息服务器接收来自各系统的消息并将消息转发到相应的系统上,以实现各系统之间的通信。
而在每个系统中,应用程序通过调用消息传送API来进行消息的发送和接收,消息传送API再通过各消息服务器所对应的消息传送客户端将消息发送至服务器或从服务器接收消息。
目前,消息服务器产品中,
属于商业软件的有:IBM WebSphere MQ、SonicMQ、Microsoft Message Queuing(mSMQ);
属于开源软件的有:ActiveMQ、OpenMQ、RabbitMQ。
虽然消息服务器产品较多,但基本遵循同一个消息传送API规范,即JMS(Java Message Service,Java消息服务):

  1. JMS是由Sun发起创建;
  2. 它与JDBC类似,只定义消息传送的相关接口,由消息服务器产品自己实现相应的接口功能;

因此,在使用不同的消息服务器产品时,系统中的应用程序可以使用同一个消息传送API。

消息传送机制的优点

1幻灯片5
消息传送机制具有以下优点:

  1. 可以实现异构集成,不同平台、不同语言的系统可以通过消息进行通信,实现集成。例如,ActiveMQ支持多语言,除Java以外,还包括C、PHP、Python。
  2. 可以缓解系统瓶颈,当系统同步处理的请求数量增大时,会造成请求阻塞,如果使用消息传送机制,可以将请求以消息方式发送至消息服务器,并由多个请求处理模块接收消息进行并发处理。
  3. 可以提高可伸缩性,这个与缓解系统瓶颈类似,通过增加或减少消息接收者来控制并发处理的能力,提高可伸缩性。
  4. 可以提高最终用户生产率,这是因为使用消息传送机制时,可以对请求进行异步处理,请求以消息方式发送至消息服务器后,最终用户无需同步等待请求返回结果。
  5. 体系结构灵活性和敏捷性,我们知道系统设计的一个基本原则就是高内聚、低耦合,通过引入消息传送机制,各系统服务以消息的形式抽象出来,减少系统之间的耦合,提高系统结构灵活性和敏捷性。

消息传送模型

1幻灯片6
首先,先引入以下概念:

  • JMS提供者(Provider),消息服务器;
  • 目的地(Destination、Queue、Topic),消息在JMS提供者中的目的地;
  • 生产者(Producer、Sender、Publisher),发送消息;
  • 消费者(Consumer、Receiver、Subscriber),接收消息。

两种消息传送模型:

  • 队列(一对一):
    • 基于拉取(Pull)或基于轮询(polling);
    • 发送到队列的消息被一个而且仅仅一个接收者所接收,即使有多个接收者在一个队列中侦听同一消息;
    • 既支持异步“即发即弃”消息传送方式,又支持同步请求/应答消息传送方式;
    • 支持负载均衡。
  • 主题(一对多):
    • 基于推送(push)的模型,其中消息自动地向消费者广播,它们无须请求或轮询主题来获得新消息。