【问题标题】:How to find out all subscribers to a JMS topic have replied?如何找出 JMS 主题的所有订阅者都已回复?
【发布时间】:2011-06-23 15:54:04
【问题描述】:

使用 HornetQ(在 JBoss AS 6.0 中)我想设置一个多个客户端可以订阅的 JMS 主题。

生产者定期向该主题发送一条带有回复目的地的消息,所有订阅者都应回复该目的地。

我遇到的问题是我不完全确定如何检查所有订阅者是否确实回复了。

一种解决方案可能是每个订阅者在订阅后首先向主题发送一条消息,其中包含其详细信息(可能是一些 GUID)。生产者会记住这些详细信息,并在以后使用它来检查是否所有订阅的客户端都已回复。

但是,与其自己发明轮子,我更愿意使用已经存在的东西。这似乎是一个标准问题,但我找不到任何现有的解决方案。

【问题讨论】:

    标签: java jms messaging


    【解决方案1】:

    您可以使用持久订阅,然后查询订阅和消息。
    http://hornetq.sourceforge.net/docs/hornetq-2.0.0.BETA5/user-manual/en/html/management.html#d0e5742

    请注意,使用持久订阅和持久消息会导致性能下降。您必须根据自己的具体需求来衡量性能影响的严重程度。

    【讨论】:

      【解决方案2】:

      JMS 本身不支持这个,太简单了。如果你不介意将你的代码耦合到 HornetQ,那么你可以使用它的原生 API 来找出这些东西。不太理想,但写得很好,源代码可读,所以不会太难。

      【讨论】:

      • 是的,我想我可能会为此使用核心 API。我们已经在使用几个 JBoss 特定的 API,但我希望尽量减少对它的进一步使用。
      猜你喜欢
      • 1970-01-01
      • 2016-06-17
      • 2018-08-14
      • 2015-04-06
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 2011-10-20
      • 2011-02-13
      相关资源
      最近更新 更多