发布/订阅消息传送

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

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

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


java System Message Queue 简要说明

 

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

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

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

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


java System Message Queue 简要说明

 

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

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

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

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

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

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

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

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

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

相关文章:

  • 2022-02-20
  • 2021-08-21
  • 2022-12-23
  • 2021-10-10
  • 2021-09-29
  • 2021-07-07
  • 2022-01-09
  • 2021-09-05
猜你喜欢
  • 2021-08-21
  • 2021-09-18
  • 2022-12-23
  • 2021-11-18
  • 2021-08-11
  • 2021-10-03
相关资源
相似解决方案