Queue是JMS的点对点发送方式,意思是只有一个消息的接收方。
消息发送者是把消息发送到JMS服务端的消息队列里面,等于是放到一个消息容器里面,接受者从这个容器里面拿消息。
消息消费者有2中方式拿到JMS队列里面的消息。
第一种是启动监听器接受消息:
public void onMessage(Message message) {
try {
String str = ((TextMessage)message).getText();
System.out.println("=========接受的字符串 : " + str);
} catch (JMSException e) {
e.printStackTrace();
}
}
第二种是启动线程接受消息:
QueueReceiver mc = quSession.createReceiver(queue);
while(true){
     Thread.sleep(3000);
}你为什么会自己收到消息,你是启动了好几个接受方吧。。

解决方案 »

  1.   

    程序写的有问题吧
    你消息是发到queue里去的,又怎么会被自己接受到呢?自己也在QUEUE上监听?如果多个对象在QUEUE上监听,那接受的确是轮流来接受的
    可以设置接受条件,只有满足条件的消息才被接受
      

  2.   


    请问,你的第二种方法如何实现?谢谢,希望最终不是通过OnMessage()实现
      

  3.   

    第二种方法是用 接受者直接调用receive()方法吧。