onMessage是容器帮你调用的,QueueConnection.start(),并不等于有消息发过来,
当在queue里有消息的时候,容器会发现,然后调用onMessage()

解决方案 »

  1.   

    不太同意楼上的说法,无论有没有消息都会执行onMessage()
      

  2.   

    差不多就是这样。receiver用setMessageListener方法绑定一个继承了onMessage方法的对象(例如message listener),就能以异步方式接收消息。connection.start()后,onMessage的消息监听器才会启动。当有消息到达时,onMessage方法才被被激活,执行里面的动作。因此,如果connection没有start,到达的消息onMessage是不会响应的。但是,onMessage方法启动后,和主动接收(同步方式)一样,都可用接收这个connection启动以前就已经到达队列里面的消息。