上一篇,我们介绍了jms&mq的一对一的消息传输与消息处理,本章节我们再实现,2个消费者共同监听一个Queue,然后循环给这
个Queue中发送多个消息,我们依然采用ActiveMQ来实现这个案例
1个队列多个监听者
场景如下图:
实现思路
new 一个queue,启动2个监听者对这个queue进行监听,处理数据,启动一个循环10次for循环,向这个队列里面放消息,让先前
两个create的监听者进行处理
一个简单的实例
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
Connection connection = factory.createConnection();
connection.start();
Queue queue = new ActiveMQQueue("testQueue");
final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer comsumer1 = session.createConsumer(queue);
comsumer1.setMessageListener(new MessageListener(){
public void onMessage(Message m) {
try {
System.out.println("Consumer1 get --> :" + ((TextMessage)m).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
MessageConsumer comsumer2 = session.createConsumer(queue);
comsumer2.setMessageListener(new MessageListener(){
public void onMessage(Message m) {
try {
System.out.println("Consumer2 get --> : " + ((TextMessage)m).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
MessageProducer producer = session.createProducer(queue);
for(int i=0; i<10; i++){
producer.send(session.createTextMessage("Message-" + i));
}
我们来运行,看结果如何:
结果和我们预期一致,下一篇我们介绍"发布&订阅"模式