前一段在组内做过一次有关《JMS和ActiveMQ介绍》的技术分享,今天把幻灯片整理了一下,希望和大家多交流。
1幻灯片1
JMS,java消息服务是由Sun提出的一套消息传送API规范,而ActiveMQ是一款开源的消息服务器产品。
1幻灯片2
1幻灯片3
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)的模型,其中消息自动地向消费者广播,它们无须请求或轮询主题来获得新消息。

标签:

基于WebSocket实现微信小程序的消息推送

微信小程序支持通过基于WebSocket进行消息推送,提供了相应的API,例如创建连接示例代码: JavaScript wx.connectSocket({ ...

阅读全文

基于nginx-sticky-module-ng实现会话保持(Sticky Sessions)

对服务进行集群部署,前端进行负载均衡时,需要实现会话保持,对于同一会话的多个请求,通过集群中的一个节点来提供服务。系统的部署结构如图所示,通过Resin...

阅读全文

ActiveMQ基于Zookeeper和LevelDB实现Master/Slave

ActiveMQ的Master/Slave目前支持三种实现方式: 1)Shared File System Master Slave; 2)JDBC Master Slave; 3)Replicated LevelDB Store。 对于第三种方...

阅读全文