当前访客身份:游客 [ 登录  | 注册加入尚学堂]
直播

我来了!

拥有积分:3962
尚学堂雄起!!威武。。。

博客分类

笔记中心

课题中心

提问中心

答题中心

解答题中心

点对点- 发布/订阅模型

我来了! 发表于 2年前 (2014-11-10 16:58:25)  |  评论(0)  |  阅读次数(923)| 0 人收藏此文章,   我要收藏   

1.3.1  点对点模型

Point-to-Point

点对点消息传送模型允许JMS客户端通过队列(queue)这个虚拟通道来同步和异步发送、接收消息。在点对点模型中,消息生产者称为发送者 (Sender),而消息消费者则称为接收者(receiver)。传统上,点对点模型是一个基于拉取(Pull)或基于轮询(polling)的消息传 送模型,这种模型从队列中请求消息,而不是自动地将消息推送到客户端。点对点消息传送模型的一个突出特点就是:发送到队列的消息被一个而且仅仅一个接收者 所接收,即使可能有多个接收者在一个队列中侦听同一消息时,也是如此。

点对点消息传送模型既支持异步"即发即弃(fire and forget)"消息传送方式,又支持同步请求/应答消息传送方式。点对点消息传送模型比发布/订阅模型具有更强的耦合性,发送者通常会知道消息将被如何 使用,而且也会知道谁将接收该消息。举例来说,发送者可能会向一个队列发送一个证券交易订单并等待响应,响应中应包含一个交易确认码。这样一来,消息发送 者就会知道消息接收者将要处理交易订单。另一个例子就是一个生成长时间运行报告的异步请求。发送者发出报告请求,而当该报告准备就绪时,就会给发送者发送 一条通知消息。在这种情况下,发送者就会知道消息接收者将要处理该消息并创建报告。

点对点模型支持负载均衡,它允许多个接收者侦听同一队列,并以此来分配负载。如图1-4所示,JMS提供者负责管理队列,确保每条消息被组内下一个 可用的接收者消费一次,而且仅仅一次。JMS规范没有规定在多个接收者中间分发消息的规则,尽管某些JMS厂商已经选择实现此规则来提升负载均衡能力。点 对点模型还具有其他优点,比如说,队列浏览器允许客户端在消费其消息之前查看队列内容--在发布/订阅模型中,并没有这种浏览器的概念。第4章会详细介绍 点对点消息传送模型的更多细节。



1.3.2  发布/订阅模型

Publish-and-Subscribe

在发布/订阅模型中,消息会被发布到一个名为主题(topic)的虚拟通道中。消息生产者称为发布者(publisher),而消息消费者则称为订 阅者(subscriber)。与点对点模型不同,使用发布/订阅模型发布到一个主题的消息,能够由多个订阅者所接收。有时候,也称这项技术为广播 (broadcasting)消息。每个订阅者都会接收到每条消息的一个副本。总地来说,发布/订阅消息传送模型基本上是一个基于推送(push)的模 型,其中消息自动地向消费者广播,它们无须请求或轮询主题来获得新消息。

发布/订阅模型的去耦能力要比p2p模型更强,消息发布者通常不 会意识到有多少订阅者或那些订阅者如何处理这些消息。举例来说,假定每次在Java应用程序发生异常时,向一个主题发布一条消息。发布者的责任仅仅是广播 发生了一个异常。该发布者不会知道,或者说通常也不关心如何使用该消息。例如,有可能是订阅者根据该异常向开发人员或支持人员发送了一封电子邮件,也有可 能是订阅者收集不同类型的异常数目用于生成报告,甚至是订阅者根据异常的类型,使用这个信息来通知随叫随到(on-call)的技术支持人员。

在发布/订阅消息传送模型内部,有多种不同类型的订阅者。非持久订阅者是临时订阅类型,它们只是在主动侦听主题时才接收消息。而另一方面,持久订阅 者将接收到发布的每条消息的一个副本,即便在发布消息,它们处于"离线"状态时也是如此。另外还有动态持久订阅者和受管的持久订阅者等类型。第2章和第5 章会详细讨论发布/订阅消息传送模型的更多细节。

分享到:0
关注微信,跟着我们扩展技术视野。每天推送IT新技术文章,每周聚焦一门新技术。微信二维码如下:
微信公众账号:尚学堂(微信号:bjsxt-java)
声明:博客文章版权属于原创作者,受法律保护。如果侵犯了您的权利,请联系管理员,我们将及时删除!
(邮箱:webmaster#sxt.cn(#换为@))
北京总部地址:北京市海淀区西三旗桥东建材城西路85号神州科技园B座三层尚学堂 咨询电话:400-009-1906 010-56233821
Copyright 2007-2015 北京尚学堂科技有限公司 京ICP备13018289号-1 京公网安备11010802015183