如何查找JMS主题的所有订阅者都回复了?

时间:2011-02-08 19:14:45

标签: java jms messaging

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

制作人定期向该主题发送一条消息,其中包含所有订阅者应回复的回复目的地。

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

一种解决方案可能是每个订阅者在订阅后首先向主题发送消息及其详细信息(可能是某些GUID)。制作人记住这些细节,并用它来检查所有订阅的客户是否都已回复。

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

2 个答案:

答案 0 :(得分:1)

JMS本身不支持这一点,它太简单了。如果您不介意将代码与HornetQ耦合,那么您可以使用其原生API来查找这些内容。不太理想,但它编写得很好并且具有可读的源代码,所以它不会太难。

答案 1 :(得分:1)

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

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