首先确认消息队列是否正确地提供了消息。如果是这种情况,可能是由于MessageListener未正确设置。需要确保MessageListener在正确的队列上注册,并且确保它具有正确的onMessage方法实现,以便正确地处理收到的消息。
以下是示例代码,演示如何正确设置MessageListener:
import javax.jms.*;
public class ExampleMessageListener implements MessageListener {
public static void main(String[] args) {
//设置连接工厂及相关参数
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
try (Connection connection = factory.createConnection()) {
connection.start();
//设置Session以及相关参数
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//获取消息队列
Destination queue = session.createQueue("exampleQueue");
//创建一个消息消费者,并将MessageListener注册到队列上
MessageConsumer consumer = session.createConsumer(queue);
consumer.setMessageListener(new ExampleMessageListener());
} catch (JMSException e) {
e.printStackTrace();
}
}
@Override
public void onMessage(Message message) {
//在这里实现MessageListener的onMessage方法
}
}
通过将ExampleMessageListener实现MessageListener,然后将其注册为MessageConsumer的MessageListener,我们可以确保在从队列上接收到消息时调用onMessage方法。