大家好,我这些天一直在学习JMS,我看到JMS的消息接收方式有两种,一种是consumer.receive(),另一种是实现一个MessageListener接口。我在这儿用的queue的消息模式,一开始我尝试的是consumer.receive()方式接收消息,没有问题,只是如果没有消息过来的话它会一直等待下去,于是我决定尝试第二种方式,据说它会在消息一到达的时候调用onMessage()方法而无需等待。
问题就出在这儿,我的做法是用一个类ConsumerUtil实现了MessageListener接口,然后在onMessage(Message message)方法中实现业务细节。但是我运行程序时根本收不到发出去的消息(连接什么的都是正确的,因为消息已经被发送出去),请大家帮我这个菜鸟分析一下,我的代码大致如下,谢谢!....../* create connection */
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(connectionURL);
conn = factory.createConnection();
conn.start();/* create session and destination */
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);MessageProducer producer = session.createProducer(destination);
Message message = session.createTextMessage("Hello, world!");
producer.send(message);ConsumerUtil consumer = new ConsumerUtil();
session.setMessageListener(consumer);......

解决方案 »

  1.   

     MessageConsumer consumer
    consumer = session.createConsumer(Queue)
    consumer.setMessageListener(new MessageListener() {  
    public void onMessage(Message message) {  
    TextMessage tm = (TextMessage) message;  
    try {  
    system.out.println("Received message: " + tm.getText()); 
    delegateHandle.AddLog(Thread.currentThread().getName()+"    "+tm.getText());

            catch (JMSException e) {  
               e.printStackTrace();  
     
    }   
    });
      

  2.   


    +1LZ的
    ConsumerUtil consumer = new ConsumerUtil();
    session.setMessageListener(consumer);
    这部分的实现,仿照1L的改一改。