Как узнать, какой слушатель 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-адресами), нет способа понять, кто из них получил сообщение, в противном случае вы можете использовать консоль, чтобы приблизительно увидеть, куда были отправлены сообщения...