ActiveMQ之Topic

与Queue不同,Topic实现的是发布/订阅模型,在下面的例子中,启动两个消费者共同监听一个Topic,然后循环给这个Topic发送多个消息。
例子:
public class TopicTest {
public static void main(String[] args) {
ActiveMQConnectionFactory connectionfactory=new ActiveMQConnectionFactory("vm://localhost");
Connection con=null;
Session session=null;
try {
con=connectionfactory.createConnection();
con.start();
session=con.createSession(false, Session.AUTO_ACKNOWLEDGE);
} catch (JMSException e) {
e.printStackTrace();
}
Topic topic=new ActiveMQTopic("TopicTest");
//注册消费者1
try {
MessageConsumer consumer1=session.createConsumer(topic);
consumer1.setMessageListener(new MessageListener(){
public void onMessage(Message arg0) {
try {
System.out.println("消费者1接收到的消息 ----"+((TextMessage)arg0).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
} catch (JMSException e) {
e.printStackTrace();
}
//注册消费者2
try {
MessageConsumer consumer2=session.createConsumer(topic);
consumer2.setMessageListener(new MessageListener(){
public void onMessage(Message arg0) {
try {
System.out.println("消费者2接收到的消息 ----"+((TextMessage)arg0).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
} catch (JMSException e) {
e.printStackTrace();
}
//注册消息生产者 发送消息
try {
MessageProducer producer=session.createProducer(topic);
for(int i=1;i<=10;i++)
{
producer.send(session.createTextMessage("message"+i));
}
} catch (JMSException e) {
e.printStackTrace();
} }
}
此实例说明:每一个消息都会被所有消费者消费。

posted @ 2016-04-09 08:20  技无止境  阅读(732)  评论(0编辑  收藏  举报