【问题标题】:notification about new subscriber joining to jms topic关于新订阅者加入 jms 主题的通知
【发布时间】:2009-09-29 20:14:35
【问题描述】:

是否有可能在消息生产者端获得某种通知,即新订阅者加入了该主题?尤其是 JBoss Messaging 是否可以实现?

【问题讨论】:

    标签: java jboss jms


    【解决方案1】:

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

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

    1. 实现一个 JBMSessionObserver 对于主题会话。这节课 将反映私有 Set 消费者,跟踪变化 定期(如每 1 秒或 所以)并通知注册的听众 通过发送事件。

    2. 实现 JBMSessionObserverListener(s), 注册他们 JBMSessionObserver 接收更改 事件。

    您将遇到的下一个问题是,JBMSession 只存储 MessageListeners 并且不知道 Listener 的所有者。侦听器没有唯一的键或名称。它们只是提供了一种处理消息的方法。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-06
      • 2016-06-17
      • 2018-08-14
      • 1970-01-01
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      相关资源
      最近更新 更多