Как узнать, какой слушатель JMS прослушивает сообщение из очереди?

Я настроил очередь jms, в которой несколько слушателей слушают одну и ту же очередь, и если я помещаю в свою очередь несколько объектов, какой слушатель получит сообщения? есть ли гарантия, что узнать, какой слушатель прослушает мое сообщение?

2 ответа

Вы заказали код слушателей? Если это так, просто добавьте некоторый код для генерации уникального идентификатора для каждого слушателя, сохраните идентификатор в переменной экземпляра. Когда слушатель получает сообщение, выведите событие с идентификатором в стандартный файл журнала.

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;
    }
  }

Привет, user2336442 (кстати, хорошее имя...), если два получателя прослушивают одну и ту же очередь, нет гарантии, кто из них получит сообщение первым, поскольку они следуют принципу "первым пришел - первым обслужен". Если два прослушивателя находятся на одном компьютере (с одинаковыми IP-адресами), нет способа понять, кто из них получил сообщение, в противном случае вы можете использовать консоль, чтобы приблизительно увидеть, куда были отправлены сообщения...

Другие вопросы по тегам