读书人

深入掌握JMS(5):实战Topic

发布时间: 2013-04-09 16:45:09 作者: rapoo

深入掌握JMS(五):实战Topic

import javax.jms.Connection;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageConsumer;import javax.jms.MessageListener;import javax.jms.MessageProducer;import javax.jms.Session;import javax.jms.TextMessage;import javax.jms.Topic;import org.apache.activemq.ActiveMQConnectionFactory;import org.apache.activemq.command.ActiveMQTopic;public class TopicTest { public static void main(String[] args) throws Exception { ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost"); Connection connection = factory.createConnection(); connection.start(); //创建一个Topic Topic topic= new ActiveMQTopic("testTopic"); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //注册消费者1 MessageConsumer comsumer1 = session.createConsumer(topic); comsumer1.setMessageListener(new MessageListener(){ public void onMessage(Message m) { try { System.out.println("Consumer1 get " + ((TextMessage)m).getText()); } catch (JMSException e) { e.printStackTrace(); } } }); //注册消费者2 MessageConsumer comsumer2 = session.createConsumer(topic); 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(topic); for(int i=0; i<10; i++){ producer.send(session.createTextMessage("Message:" + i)); } }}

?运行后得到下面的输出结果:

?

Consumer1 get Message:0

Consumer2 get Message:0

Consumer1 get Message:1

Consumer2 get Message:1

Consumer1 get Message:2

Consumer2 get Message:2

Consumer1 get Message:3

Consumer2 get Message:3

Consumer1 get Message:4

Consumer2 get Message:4

Consumer1 get Message:5

Consumer2 get Message:5

Consumer1 get Message:6

Consumer2 get Message:6

Consumer1 get Message:7

Consumer2 get Message:7

Consumer1 get Message:8

Consumer2 get Message:8

Consumer1 get Message:9

Consumer2 get Message:9

?

说明每一个消息都会被所有的消费者消费。

读书人网 >软件架构设计

热点推荐