Queue实现的是点到点模型,在下面的例子中,启动2个消费者共同监听一个Queue,然后循环给这个Queue中发送多个消息,我们依然采用ActiveMQ。

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

运行这个例子会得到下面的输出结果:

view plaincopy to clipboardprint?
  1. Consumer1 get Message:0
  2. Consumer2 get Message:1
  3. Consumer1 get Message:2
  4. Consumer2 get Message:3
  5. Consumer1 get Message:4
  6. Consumer2 get Message:5
  7. Consumer1 get Message:6
  8. Consumer2 get Message:7
  9. Consumer1 get Message:8
  10. Consumer2 get Message:9

可以看出每个消息直被消费了一次,但是如果有多个消费者同时监听一个Queue的话,无法确定一个消息最终会被哪一个消费者消费。

深入掌握JMS(四):实战Queue相关推荐

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

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

  2. 深入掌握JMS JMSCorrelationID与Selector

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

  3. Queue —— JUC 的豪华队列组件

    目录 引言 一.Queue 的继承关系 1.1 Queue 定义基础操作 1.2 AbstractQueue 为子类减负 1.3 BlockingQueue 阻塞式Queue 1.4 Deque 两头 ...

  4. JMS ActiveMQ

    1  JMS消息中间件 2.1 消息中间件介绍 什么是中间件? redis缓存服务器就是一个中间件.独立于系统之外的一个服务器 JMS即Java消息服务(Java Message Service)应用 ...

  5. Google guava第一讲:guava缓存实战/使用场景/缓存清理/最佳实践/caffeine实战

    Guava缓存实战及使用场景 摘要:本文是Google guava 第一件,本文先介绍了为什么使用Guava Cache缓存,然后讲解了使用方法及底层数据结构,结合实际业务,讲解使用guava过程中踩 ...

  6. jms规范以及activeMq相关介绍

    jms 提出的指在统一各种MOM(Message-Oriented Middleware )系统接口的规范,只是接口,不包含实现,实现JMS 接口的消息中间件称为JMS Provider.active ...

  7. 《Java 并发编程实战》--读书笔记

    Java 并发编程实战 注: 极客时间<Java 并发编程实战>–读书笔记 GitHub:https://github.com/ByrsH/Reading-notes/blob/maste ...

  8. MQ 入门(四)—— 消息确认机制Ack

    一.ACK机制简介 ACK (Acknowledgement),即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符.表示发来的数据已确认接收无误. JMS API中约定了Client端可以 ...

  9. 实操指南 | Resource Queue如何实现对AnalyticDB PostgreSQL的资源管理?

    简介:作者:阿里云数据库OLAP产品部 - 子华 一 背景 AnalyticDB PostgreSQL版(简称ADB PG)是阿里云数据库团队基于PostgreSQL内核(简称PG)打造的一款云原生数 ...

最新文章

  1. IE下的优秀js调试工具Companion.JS
  2. 什么是栈,栈存储结构详情
  3. waf可以查看post请求吗_WAF是如何被绕过的?
  4. 常用数据验证正则表达式释义(附:正则表达式常用符号)
  5. cadence PCB板级设计
  6. 大数据分析-excel常用技巧
  7. nginx + tomcat + redis 部署项目,解决session共享问题。
  8. MariaDB链接超时优化
  9. Xcode 高级调试技巧
  10. 《电脑音乐制作实战指南:伴奏、录歌、MTV全攻略》——第1篇 获取伴奏篇 第1章 MIDI音乐伴奏的获取与制作 1.1 电脑MIDI音乐与设备的介绍...
  11. 怎么自费出书方法步骤
  12. 33个地区发iPhone5,老外纳闷中国没人排队_-Chaz-_新浪博客
  13. 三创赛优秀作品_三创赛优秀作品.doc
  14. 互联网医院|智慧医院系统|线上看病购药更便捷
  15. Seaweed-FS综合使用测试
  16. IQ信号,IQ样本,IQ数据,constallation diagram(星座图)
  17. 贵州省安顺市谷歌卫星地图下载
  18. EdgeX 树莓派实践部署
  19. 商业分析_第一篇 价格弹性
  20. 数字经济数据2009-2019年、数字经济发展指标体系和测算2011-2020年、地级市数字经济数据2011-2019年、数字经济发展指数2011-2020年

热门文章

  1. bin文件编辑_为MediaWiki安装可视化编辑器VisualEditor
  2. 操作系统之I/O管理:4、缓冲区管理(单缓冲、双缓冲、循环缓冲、缓冲池)
  3. LeetCode篇之链表:83(去重问题)
  4. 使用valgrind检查内存问题
  5. C/C++编程操作Redis数据库,hiredis包装redis数据库操作接口及测试(增删改查与连接)
  6. 缩点【洛谷P1262】 间谍网络
  7. ACM-ICPC 2018 徐州赛区网络预赛G (单调队列)
  8. 集群和分布式部署有什么区别?
  9. JQuery------实现鼠标摁下抬起时div背景色改变
  10. pat Simulation Test for PAT(B) 9月4日