上篇博客写了生产者生产消息: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页面查看
我们可以启动两次消费者,就是一个集群。
然后再运行生产者代码,观察两个消费者的控制台
均摊