java System Message Queue 简要说明

本文深入探讨了发布/订阅消息传送模型,介绍了其核心组件——发布者、订户和主题,以及消息如何在这些组件间广播。文章详细解释了消息的发布、接收、过滤和保留机制,并讨论了该模型在动态系统中的应用。

发布/订阅消息传送

在发布/订阅域中,消息生成方被称为发布者,而消息使用方则被称为订户。它们通过称为主题的目的地来交换消息:发布者生成主题中的消息;订户则订阅主题并使用主题中的消息。

图 2–3 显示了发布/订阅域中的简单消息传送操作。MyTopicPublisher 向目的地 MyTopic 发布 Msg1。然后,MyTopicSubscriber1和 MyTopicSubscriber2 均从 MyTopic 接收 Msg1 的副本。

图 2–3 简单发布/订阅消息传送


图中显示了通过一个主题目的地向两个订户发送同一条消息的一个发布者。该图用文本进行说明。

 

虽然发布/订阅模型不要求多个订户,但图中仍显示了两个订户来强调通过此域可以广播消息。一个主题的所有订户均可获得发布到该主题的任何消息的副本。

长期订户可能处于活动状态,也可能处于非活动状态。代理会为所有活动订户保留消息,但对于非活动订户,则只为那些长期订户保留消息。

图 2–4 显示了更为复杂的发布/订阅消息传送图,以说明该模式提供的可能情况。多个生成方向 Topic1 目的地发布消息。多个订户使用来自 Topic1 目的地的消息。除非订户使用选择器来过滤消息,否则每个订户均可获得发布到所选主题的所有消息。在图 2–4 中,MyTSubscriber2 已过滤掉 Msg2。

图 2–4 复杂发布/订阅消息传送


图中显示了通过一个主题目的地向三个订户发送消息的三个发布者。该图用文本进行说明。

 

这张较为复杂的图说明了有关发布/订阅消息传送的很多其他点。

  • 多个生成方可向一个主题发布消息。生成方可共享连接或使用不同连接,但它们均可访问同一主题。

  • 多个订户可使用一个主题中的消息。订户可检索发布到一个主题中的所有消息,除非它们使用选择器过滤掉消息或消息在使用之前已过期。

  • 订户可共享连接或使用不同连接,但它们均可访问同一主题。

  • 长期订户可能处于活动状态,也可能处于非活动状态。在它们处于非活动状态时,代理会为它们保留消息。

  • 可在运行时动态添加和删除发布者和订户,这样,即可根据需要缩放消息传送系统。

  • 消息按发送的顺序发布到主题,但使用消息的顺序取决于多种因素,例如消息失效日期、消息优先级以及使用消息时是否使用了选择器。

  • 发布者与订户之间存在时间上的相关性:主题订户只能使用在它创建订阅后发布的消息。

发布/订阅模型的最大优点是消息可以广播给订户。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值