【问题标题】:How to know which JMS listener listen message from queue?如何知道哪个 JMS 侦听器从队列中侦听消息?
【发布时间】:2013-04-30 15:15:24
【问题描述】:

我已经配置了 jms 队列,其中多个侦听器正在侦听同一个队列,如果我将多个对象推送到我的队列中,哪个侦听器将获取消息?是否可以保证知道哪个听众听我的消息?

【问题讨论】:

  • 你能贴一些代码吗?

标签: jms oracle-aq


【解决方案1】:

您是否对侦听器进行了自定义编码?如果是这样,只需添加一些代码为每个侦听器生成唯一的 id,将 id 保存在实例变量中。当侦听器收到消息时,将带有 id 的事件输出到标准日志文件。

public class MyListener extends MessageListener {

    private static int listeners;
    private int id;

    public MyListener(){
      this.id = generateUniqueId();
    }

    public void onMessage(Message m){
      System.out.println("Listener " + id + " got message!");
      //do stuff here 
    }

    private synchronized static int generateUniqueId(){
        return listeners += 1;
    }
  }

【讨论】:

    【解决方案2】:

    您好 user2336442(顺便说一句好名字...), 如果两个接收者在同一个队列上侦听,则无法保证其中哪一个会先收到消息,因为它们遵循先到先得的原则。如果两个监听器在同一台机器上(相同的ip地址)就无法知道是哪一个收到了消息,否则可以通过控制台粗略查看消息发送到哪里...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 2017-07-12
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      • 2013-06-16
      相关资源
      最近更新 更多