【问题标题】:Pub/Sub paradigm: Can I know if subscribers are alive?Pub/Sub 范式:我可以知道订阅者是否还活着吗?
【发布时间】:2011-12-31 08:02:12
【问题描述】:

我在主题发布者和可变数量的主题订阅者之间使用 JMS (ActiveMQ)。

我必须及时检查某些订阅者是否处于“离线”状态(断开连接、关机、无法通信等...)。
JMS 有没有办法让发布者知道哪些订阅者被“注册”了?

现在,我已经实现了它,以便订阅者在特定队列上发送“活动”消息(充当生产者),发布者接收它们(充当消费者):如果检测到任何订阅者没有't "ping" X 秒(阈值),假定它处于脱机状态。 它有效,但我很想知道我是否重新发明了轮子......

我知道此功能与消息传递或 Pub/Sub 范式并不完全相关,而且我也知道 Pub/Sub 是专门设计的,因此发布者不必担心其消息将在谁/在哪里/何时发送消耗....但我想知道,如果它确实想知道,也许有办法。 毕竟,这似乎不是一个特别罕见的用例......

非常感谢。

【问题讨论】:

标签: java jms messaging activemq


【解决方案1】:

我认为没有办法直接告诉您的发布者有关订阅者的信息。

您实际上应该使用AMQ advisory messages 来跟踪订阅者的状态。阅读这篇文章 - 它提供了您需要的所有信息。

【讨论】:

    【解决方案2】:

    JMS 明确地将发布者与订阅者分离。重点应该是两人不需要知道或关心对方的状态。因此 JMS 无法满足您的要求。另一方面,提供者将拥有特定于供应商的管理 API,正如 Paul 所指出的,AMQ 咨询消息是您想要的 Active MQ。因为这些是特定于供应商的,所以它不能移植到任何其他提供者,并且不会与 JMS 兼容。不是 AMQ 的错,只是它不是 JMS 规范的一部分。

    【讨论】:

      猜你喜欢
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      相关资源
      最近更新 更多