0

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

4

2 回答 2

2

您是否对侦听器进行了自定义编码?如果是这样,只需添加一些代码为每个侦听器生成唯一的 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;
    }
  }
于 2013-05-07T03:02:39.820 回答
0

嗨 user2336442(顺便提一下,好名字...),如果两个接收者在同一个队列上监听,则无法保证其中一个会先收到消息,因为它们遵循先到先得的原则。如果两个侦听器在同一台机器上(相同的ip地址),则无法了解是哪一个收到了消息,否则您可以使用控制台大致查看消息已发送到哪里...

于 2013-04-30T15:56:28.727 回答