上篇博客写了生产者生产消息:ActiveMQ向消息队列存入消息
package com.vhukze.consumer;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class Consumer {
//mq通讯地址
private static String url = "tcp://127.0.0.1:61616";
//队列名称
private static String queueName = "my_queue";
public static void main(String[] args) throws JMSException {
System.out.println("消费者1");
//创建连接工厂
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(url);
//创建连接
Connection connection = factory.createConnection();
//启动连接
connection.start();
//创建会话,参数1,设置是否需要事务方式提交,参数2,消息方式 默认采用自动接收
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建目标(队列)
Queue queue = session.createQueue(queueName);
//创建消费者
MessageConsumer consumer = session.createConsumer(queue);
//启动监听消息
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
try {
TextMessage textMessage = (TextMessage) message;
System.out.println("消费消息:"+textMessage.getText());
}catch (Exception e){
e.printStackTrace();
}
}
});
}
}
运行代码输出
现在再来看ActiveMQAdmin页面查看
我们可以启动两次消费者,就是一个集群。
然后再运行生产者代码,观察两个消费者的控制台
均摊