消费者消费队列消息Listener方法也分7步走
1.创建connection工厂
2.创建connection
3.创建会话session
4.创建目的地(现在是连接队列)queue
5.创建消费者consumer
6.监听服务器消费消息Listener()
7.释放资源
代码示例:
package com.xiaowu.activemq;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.io.IOException;
import static javax.jms.Session.AUTO_ACKNOWLEDGE;
public class JmsConsumerListener {
public static final String ACTIVEMQ_URL="tcp://152.136.12.27:61616";
public static final String Queuep="queue01";
public static void main(String[] args) throws JMSException, IOException {
//1.create factory
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
//2.create connect and start
Connection connection = activeMQConnectionFactory.createConnection();
connection.start();
//3.create session
Session session = connection.createSession(false, AUTO_ACKNOWLEDGE);
//4.create 目的地
Queue queue = session.createQueue(Queuep);
//5.create consumer
MessageConsumer messageConsumer = session.createConsumer(queue);
//6.监听服务器
messageConsumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
//判断消息是否为空并且是否是TextMessage类型
if (message!=null&&message instanceof TextMessage){
try {
//消费前保证和生产者生产的消息类型相同,强制转换
System.out.println("消费者监听到消息:"+((TextMessage) message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
//System.in.read()方法是为了保证监听是有时间处理消息,不加还没连接到消息程序就结束了
System.in.read();
//7.释放资源
messageConsumer.close();
session.close();
connection.close();
}
}
运行效果:
服务器端:
可以看到,和上一篇的方法运行结果是一样的(消息队列消息是删除之后重新生成的)