JMS&MQ,从入门到精通(三)
2017-04-28 11:19
225 查看
上一篇中我们介绍了,一对多的,生产消费队列模型,本篇我们来介绍发布/订阅模型,同样我们需要一个生产者 两个消费者不同之处在于:上篇之中,我们的生产者的同一个消息,只能被消费一次,本篇之中,一个消息,多个消费者能收到所有的消息.
广播/订阅
场景如下图
实现思路
1.先利用activeMq,创建一个虚拟的注册中心(实际上要运行activeMq,和redis类似,先运行再连接,再操作) 2.创建一个topic 3.两个监听者,监听这个topic 4.监听者监听消息并处理
一个简单的实例
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)); }
我们来看运行结果;下一篇,我们介绍队列的持久化
相关文章推荐
- JMS&MQ,从入门到精通(五)
- JMS&MQ,从入门到精通(二)
- JMS&MQ,从入门到精通(六)
- JMS&MQ,从入门到精通(四)
- JMS&MQ,从入门到精通(一)
- JMS&MQ,从入门到精通(八)
- JMS&MQ,从入门到精通(七)
- JMS&MQ系列之简单示例
- G7从入门到精通 =>(新手实践成功 HBOOT-0.93.0001 )
- JMS&MQ系列之普通Java程序中加载配置
- JMS&MQ系统之Spring中嵌入ActiveMQ
- JMS&MQ系列之JMS的请求和回应
- JMS&MQ系列之简单JMS应用程序编写步骤
- MQ入门总结(二)JMS
- lucene&solr从入门到精通-----创建索引,写到索引库
- Spring.NET & NHibernate从入门到精通
- 分享一个两年前写的JMS&ActiveMQ入门的ppt
- JMS&MQ系列之消息存储方式
- JMS&MQ系列之JMS概述
- MQ入门总结(二)JMS