我已经配置了 jms 队列,其中多个侦听器正在侦听同一个队列,如果我将多个对象推送到我的队列中,哪个侦听器将获取消息?是否可以保证知道哪个听众听我的信息?
问问题
2021 次
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 回答