[原创]JMS的两种通信模式_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2651 | 回复: 0   主题: [原创]JMS的两种通信模式        下一篇 
    本主题由 koei123 于 2015-6-2 22:17:18 移动
llei.zhang
注册用户
等级:中尉
经验:492
发帖:18
精华:0
注册:1970-1-1
状态:离线
发送短消息息给llei.zhang 加好友    发送短消息息给llei.zhang 发消息
发表于: IP:您无权察看 2015-5-29 16:09:51 | [全部帖] [楼主帖] 楼主

JMS两种消息模型:



JMS提供了两种消息通信模型:

     1.点到点(P2P)模型

     2. 发布/订阅(Pub/Sub)模型

                                                                                                       北京联动北方科技有限公司

图 2 JMS通讯模型

从图中可以看出,ClientA和ClientB是消息生产者,通过两种不同的目的地分别向ClientC、ClientD、ClientE和ClientF发送消息。
      在ClientA、C、D之间的消息是点对点模型,使用这种模型,客户端发送消息到队列目的地(Queue),从这个队列里面只有一个消息接收者可以收到 那个消息,其他访问同一目的地的接收者不会接收到该消息。如ClientC接收Queue中的Msg1消息,ClientD接收Queue中的Msg2消息。
      在ClientB、E、F之间的消息是发布/订阅模型。使用这种广播模型,一个客户端发送消息给主题目的地(Topic),任何数量的消费订阅者可以从这个主题目的地来接收它们。如:ClientE和ClientF都接收这个Msg3这条消息。

点到点模型:


点对点传递模型:生产者发送消息到一个特定的队列(Queue)中,而消费者从一个消息队列中得到消息,如下图所示:

北京联动北方科技有限公司
                                                                                            图 3 点到点通讯模型示意图

点对点模型的特点:

1.  每条消息有一个消费者

     每条只有一个消费者,如果一条消息被消息者接收,那么其他的消费者就不能得到这条消息了。

2. 发送和接受消息与时间没有关系

     也就是说,生产者在发送消息后,消费者可以在任意的时刻接收,但有两个前提:

     1、消息未过期

     2、消息没有被其他的用户接收

     消费者也可以先运行,当生产者一运行,将消息发送到队列中,消费者即可从队列中获得消息,这叫“守株待兔“。

3.  消费者必须确认对消息的接收

     收到消息后消费者必须确认消息已被接收,否则JMS服务提供者会认为该消息没有被接收,那么这条消息仍然可以被其他人接收。程序可以自动进行确认,不需要人工干预。

4.  非持久的消息最多只发送一次

     非持久的消息最多只发送一次,表示消息有可能未被发送,造成未被发送的原因可能有:

     1、 JMS服务提供者出现宕机等情况,造成非持久信息的丢失

     2、 队列中的消息过期,未被接收

5.  持久的消息严格发送一次

     我们可以将比较重要的消息设置为持久化的消息,持久化后的消息不会因为JMS服务提供者的故障或者其他原因造成消息丢失。

发布/订阅模型


     发布/订阅模型:发布/订阅传递消息类型与主题(Topic)有关。生产者发布消息,而消费者订阅感兴趣的消息,生产者将消息和一个特定的主题 (Topic)连在一起,消息传递系统(MOM)根据消费者注册的兴趣,将消息传递给消费者。这种类型非常类似出版报纸、杂志的形式,如下图所示:

北京联动北方科技有限公司

图 4 发布/订阅通讯模型示意图

发布/订阅模型的特点:

1.  每个消息都可以有多个订阅者

     每条消息可以有多个消费者,如果报纸和杂志一样,谁订阅了谁都可以获得。

2.  订阅者只能消费他们订阅之后出版的消息

     这就要求订阅者必须先订阅,生产者再发布。即订阅者必须先运行,再等待生产者的运行,这和点对点类型有所差异。

3.  订阅者必须保持为活动状态才能使用这些消息

     即订阅者必须保持活动状态等待发布者发布的消息,如果订阅者在发布者发布消息之后才运行,则不能获得先前发布者发布的消息。

Weblogic知识要点之JMS配置:http://bbs.landingbj.com/showtopic.jsp?boardcode=ZJJ&hit=4&showid=250143&rootid=250143

JMS点对点实例:http://bbs.landingbj.com/showtopic.jsp?rootid=245801&CPages=1

JMS 发布与订阅:http://bbs.landingbj.com/showtopic.jsp?rootid=245887&CPages=1

JMS队列收发消息实例:http://bbs.landingbj.com/showtopic.jsp?boardcode=WLTL&hit=356&showid=248071&rootid=248071

该贴由koei123转至本版2015-6-2 22:17:18



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论