关于新订户加入jms主题的通知

时间:2009-09-29 08:59:19

标签: java jboss jms

是否有可能在消息生产者方面获得通知,新订阅者加入了该主题?特别是JBoss Messaging可以吗?

1 个答案:

答案 0 :(得分:1)

主题订阅者(消费者)存储在JBoss的TopicSession实现(JBMSession)中的私有字段中。这些类中没有一个提供对该字段的访问方法,因此如果没有黑客攻击(反射),我认为无法解决该问题。

但是如果你可以使用反思并且不介意使用它,那么以下策略可能接近你想要的:

  1. 实现JBMSessionObserver 对于TopicSession。这个班 将反映私人集 消费者,跟踪变化 定期(如每1秒钟或 所以)并通知已注册的听众 发送活动。

  2. 实施     JBMSessionObserverListener(S),     注册他们     JBMSessionObserver接收更改     事件

  3. 您将遇到的下一个问题是,JBMSession仅存储MessageListeners,并且不知道监听器的所有者。监听器没有唯一的密钥或名称。他们只是提供了处理消息的方法。

    因此,您可以获得 新侦听器已加入的信息,但您可能无法识别侦听器后面的真实消费者。