【发布时间】:2011-12-31 08:02:12
【问题描述】:
我在主题发布者和可变数量的主题订阅者之间使用 JMS (ActiveMQ)。
我必须及时检查某些订阅者是否处于“离线”状态(断开连接、关机、无法通信等...)。
JMS 有没有办法让发布者知道哪些订阅者被“注册”了?
现在,我已经实现了它,以便订阅者在特定队列上发送“活动”消息(充当生产者),发布者接收它们(充当消费者):如果检测到任何订阅者没有't "ping" X 秒(阈值),假定它处于脱机状态。 它有效,但我很想知道我是否重新发明了轮子......
我知道此功能与消息传递或 Pub/Sub 范式并不完全相关,而且我也知道 Pub/Sub 是专门设计的,因此发布者不必担心其消息将在谁/在哪里/何时发送消耗....但我想知道,如果它确实想知道,也许有办法。 毕竟,这似乎不是一个特别罕见的用例......
非常感谢。
【问题讨论】:
-
可能使用持久订阅,如此线程stackoverflow.com/questions/4937262/…中所示
-
@Alfabravo 该线程中显示的解决方案特定于 HornetQ。 DurableSubscriptions 也不是我想要检查的内容,是吗?他们所做的只是将消息保存在内存中,以便可以将它们传递给“无法访问”的订阅者……这不会将订阅者列表暴露给我的程序。
-
不,该设置未绑定到 HornetQ。 docs.oracle.com/cd/E19798-01/821-1841/bncgd/index.html Aaaand 好吧,也许有足够的解决方法,它可能会帮助你 docs.oracle.com/cd/E19798-01/821-1841/bncfx/index.html
标签: java jms messaging activemq