http://www.cnblogs.com/gaohuiqian/p/5213377.html 在这篇文章的最后我们看到了MessageConsumer 接收消息的方式是通过调用receive()方法或者
receive((int timeout)方法进行调用,还存在一种注册一MessageListener的方法。
所以消息的消费者接收消息可以采用两种方式:
1、consumer.receive() 或 consumer.receive(int timeout);
2、注册一个MessageListener。
采用第一种方式,消息的接收者会一直等待下去,直到有消息到达,或者超时。后一种方式会注册一个监听器,当有消息到达的时候,会回调它的onMessage()方法。
列:
class MessageListener{
public void dealMessage() throws JMSException{
//1.首先拿到连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(Publisher.brokerURL);
//2.通过工厂创建连接
Connection connection = connectionFactory.createConnection();
connection.start();//打开链接
//3.通过连接创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//4.创建目标(即队列)
Destination destination = session.createQueue("testQuery");
//5.通过会话创建消费者
MessageConsumer consumer = session.createConsumer(destination);
//6.从队列中拿到消息
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
try {
int content = message.getIntProperty("content");
System.out.println(content);
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
connection.stop();
}
}