2019独角兽企业重金招聘Python工程师标准>>>

与Queue不同的是,Topic实现的是发布/订阅模型,在下面的例子中,启动2个消费者共同监听一个Topic,然后循环给这个Topic中发送多个消息。

view plain copy to clipboard print ?
  1. import javax.jms.Connection;
  2. import javax.jms.JMSException;
  3. import javax.jms.Message;
  4. import javax.jms.MessageConsumer;
  5. import javax.jms.MessageListener;
  6. import javax.jms.MessageProducer;
  7. import javax.jms.Session;
  8. import javax.jms.TextMessage;
  9. import javax.jms.Topic;
  10. import org.apache.activemq.ActiveMQConnectionFactory;
  11. import org.apache.activemq.command.ActiveMQTopic;
  12. public class TopicTest {
  13. public static void main(String[] args) throws Exception {
  14. ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
  15. Connection connection = factory.createConnection();
  16. connection.start();
  17. //创建一个Topic
  18. Topic topic= new ActiveMQTopic("testTopic");
  19. Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  20. //注册消费者1
  21. MessageConsumer comsumer1 = session.createConsumer(topic);
  22. comsumer1.setMessageListener(new MessageListener(){
  23. public void onMessage(Message m) {
  24. try {
  25. System.out.println("Consumer1 get " + ((TextMessage)m).getText());
  26. } catch (JMSException e) {
  27. e.printStackTrace();
  28. }
  29. }
  30. });
  31. //注册消费者2
  32. MessageConsumer comsumer2 = session.createConsumer(topic);
  33. comsumer2.setMessageListener(new MessageListener(){
  34. public void onMessage(Message m) {
  35. try {
  36. System.out.println("Consumer2 get " + ((TextMessage)m).getText());
  37. } catch (JMSException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. });
  42. //创建一个生产者,然后发送多个消息。
  43. MessageProducer producer = session.createProducer(topic);
  44. for(int i=0; i<10; i++){
  45. producer.send(session.createTextMessage("Message:" + i));
  46. }
  47. }
  48. }

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

view plain copy to clipboard print ?
  1. Consumer1 get Message:0
  2. Consumer2 get Message:0
  3. Consumer1 get Message:1
  4. Consumer2 get Message:1
  5. Consumer1 get Message:2
  6. Consumer2 get Message:2
  7. Consumer1 get Message:3
  8. Consumer2 get Message:3
  9. Consumer1 get Message:4
  10. Consumer2 get Message:4
  11. Consumer1 get Message:5
  12. Consumer2 get Message:5
  13. Consumer1 get Message:6
  14. Consumer2 get Message:6
  15. Consumer1 get Message:7
  16. Consumer2 get Message:7
  17. Consumer1 get Message:8
  18. Consumer2 get Message:8
  19. Consumer1 get Message:9
  20. Consumer2 get Message:9

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

转载于:https://my.oschina.net/201003674/blog/650198

深入掌握JMS(五):实战Topic 1相关推荐

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

    与Queue不同的是,Topic实现的是发布/订阅模型,在下面的例子中,启动2个消费者共同监听一个Topic,然后循环给这个Topic中发送多个消息. view plaincopy to clipbo ...

  2. 自定义菜单url不能带_微服务架构【SpringBoot+SpringCloud+VUE】五 || 实战项目微信公众号自定义开发...

    本章主要讲解微信公众号自定义菜单.微信网页开发.模板消息推送等功能的实现: 发福利了,下方关注公众号,就能免费获取项目源码 1.自定义菜单 开发前需要了解以下几点: 1.微信公众号的自定义菜单最多包括 ...

  3. 十五. 实战——mysql建库建表 字符集 和 排序规则

    1. 字符集和排序规则 字符集 当数据库需要适应不同的语言就需要有不同的字符集,如果不指定字符集的话,那么就会使用数据库的默认的字符集,每种字符集都有自己默认的排序规则.mysql默认字符集为utf8 ...

  4. 深入掌握JMS JMSCorrelationID与Selector

    http://wangh8080.blog.163.com/blog/static/197848297201241843917244/ 深入掌握JMS(一):JSM基础 2012-05-18 16:3 ...

  5. [z]JMS简明学习教程

    基础篇 JMS是应用系统或组件之间相互通信的应用程序接口,利用它,我们可以轻易实现在不同JVM之间相互的远程通信.要实现远程通信,RPC同样也能做到,但RPC却不可避免地增加了不同系统之间的耦合度,J ...

  6. (转)JMS简明学习教程

    转:http://www.cnblogs.com/jjj250/archive/2012/08/08/2628552.html 基础篇 JMS是应用系统或组件之间相互通信的应用程序接口,利用它,我们可 ...

  7. 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例

    转载:http://blog.csdn.net/jiuqiyuliang/article/details/48758203 第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模 ...

  8. SpringBoot整合RabbitMQ 实现五种消息模型

    目录 SpringBoot中使用RabbitMQ 搭建初始环境 引入依赖 配置配置文件 测试类 注入 rabbitTemplate 消息队列RabbitMQ之五种消息模型 第一种直连模型使用 开发生产 ...

  9. spring和activemq的结合(五)

    转载:http://blog.csdn.net/jiuqiyuliang/article/details/48758203 前言 这篇博文,我们基于spring+JMS+ActiveMQ+Tomcat ...

  10. JMS学习(4):--Spring和ActiveMQ整合的完整实例

    前言 这篇博文,我们基于spring+JMS+ActiveMQ+Tomcat,做一个Spring4.1.0和ActiveMQ5.11.1整合实例,实现了Point-To-Point的异步队列消息和PU ...

最新文章

  1. python_ 学习笔记(hello world)
  2. job每分钟执行 oracle_oracle job 时间每五分钟执行怎么写
  3. 独木舟上的旅行(贪心)
  4. Python基础(19)_异常处理
  5. Jenkins分布式构建和部署(master-slave)
  6. 学习总结——接口测试基础
  7. AI 会替代程序员?超好用的自动补全代码工具 Deep TabNine!
  8. 随机变量的数字特征(期望、方差、标准差、矩、协方差...)
  9. PHP安装Xdebug调试工具
  10. Axure 8.1.0.3388授权码
  11. mysql定时备份脚本
  12. android上的sip软电话
  13. java计算机毕业设计会议管理系统MyBatis+系统+LW文档+源码+调试部署
  14. 谷歌浏览器(chrome)无法正常打开网页的解决办法
  15. NOIP 2017 游记
  16. 如何用PS把图片中的人物剪掉
  17. 童鞋想盗取我十几个G的“种子”,看我是用python来层层加锁!!!
  18. 做为一个玩家如何架设传奇
  19. php 模拟数猴子数大王,猴子大王的问题
  20. 经济学基础(本)【3】

热门文章

  1. php什么是同源策略,javascript - 绕过同源策略的方法
  2. java404_java这个404你能解决吗?
  3. ps软件电脑版_安装PS/AI/CDR软件,电脑配置的怎样?
  4. webgis 行政图报错_开源WebGIS:地图发布与地图服务
  5. pycharm查询mysql数据库_pycharm访问mysql数据库的方法步骤
  6. Flutter状态管理学习手册(三)——Bloc
  7. R实践 第二篇:创建数据集
  8. 制作pip源(按需,非镜像方式)
  9. Python操作IHTMLDocument2用于自动化测试
  10. Spark 概念学习系列之从物理执行的角度透视spark Job(十七)