深入掌握JMS(四):实战Queue
Queue实现的是点到点模型,在下面的例子中,启动2个消费者共同监听一个Queue,然后循环给这个Queue中发送多个消息,我们依然采用ActiveMQ。
- import javax.jms.Connection;
- import javax.jms.DeliveryMode;
- import javax.jms.JMSException;
- import javax.jms.Message;
- import javax.jms.MessageConsumer;
- import javax.jms.MessageListener;
- import javax.jms.MessageProducer;
- import javax.jms.Queue;
- import javax.jms.Session;
- import javax.jms.TextMessage;
- import org.apache.activemq.ActiveMQConnectionFactory;
- import org.apache.activemq.command.ActiveMQQueue;
- public class QueueTest {
- public static void main(String[] args) throws Exception {
- ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
- Connection connection = factory.createConnection();
- connection.start();
- //创建一个Queue
- Queue queue = new ActiveMQQueue("testQueue");
- //创建一个Session
- Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- //注册消费者1
- MessageConsumer comsumer1 = session.createConsumer(queue);
- 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(queue);
- 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(queue);
- for(int i=0; i<10; i++){
- producer.send(session.createTextMessage("Message:" + i));
- }
- }
- }
运行这个例子会得到下面的输出结果:
- Consumer1 get Message:0
- Consumer2 get Message:1
- Consumer1 get Message:2
- Consumer2 get Message:3
- Consumer1 get Message:4
- Consumer2 get Message:5
- Consumer1 get Message:6
- Consumer2 get Message:7
- Consumer1 get Message:8
- Consumer2 get Message:9
可以看出每个消息直被消费了一次,但是如果有多个消费者同时监听一个Queue的话,无法确定一个消息最终会被哪一个消费者消费。
深入掌握JMS(四):实战Queue相关推荐
- 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
转载:http://blog.csdn.net/jiuqiyuliang/article/details/48758203 第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模 ...
- 深入掌握JMS JMSCorrelationID与Selector
http://wangh8080.blog.163.com/blog/static/197848297201241843917244/ 深入掌握JMS(一):JSM基础 2012-05-18 16:3 ...
- Queue —— JUC 的豪华队列组件
目录 引言 一.Queue 的继承关系 1.1 Queue 定义基础操作 1.2 AbstractQueue 为子类减负 1.3 BlockingQueue 阻塞式Queue 1.4 Deque 两头 ...
- JMS ActiveMQ
1 JMS消息中间件 2.1 消息中间件介绍 什么是中间件? redis缓存服务器就是一个中间件.独立于系统之外的一个服务器 JMS即Java消息服务(Java Message Service)应用 ...
- Google guava第一讲:guava缓存实战/使用场景/缓存清理/最佳实践/caffeine实战
Guava缓存实战及使用场景 摘要:本文是Google guava 第一件,本文先介绍了为什么使用Guava Cache缓存,然后讲解了使用方法及底层数据结构,结合实际业务,讲解使用guava过程中踩 ...
- jms规范以及activeMq相关介绍
jms 提出的指在统一各种MOM(Message-Oriented Middleware )系统接口的规范,只是接口,不包含实现,实现JMS 接口的消息中间件称为JMS Provider.active ...
- 《Java 并发编程实战》--读书笔记
Java 并发编程实战 注: 极客时间<Java 并发编程实战>–读书笔记 GitHub:https://github.com/ByrsH/Reading-notes/blob/maste ...
- MQ 入门(四)—— 消息确认机制Ack
一.ACK机制简介 ACK (Acknowledgement),即确认字符,在数据通信中,接收站发给发送站的一种传输类控制字符.表示发来的数据已确认接收无误. JMS API中约定了Client端可以 ...
- 实操指南 | Resource Queue如何实现对AnalyticDB PostgreSQL的资源管理?
简介:作者:阿里云数据库OLAP产品部 - 子华 一 背景 AnalyticDB PostgreSQL版(简称ADB PG)是阿里云数据库团队基于PostgreSQL内核(简称PG)打造的一款云原生数 ...
最新文章
- IE下的优秀js调试工具Companion.JS
- 什么是栈,栈存储结构详情
- waf可以查看post请求吗_WAF是如何被绕过的?
- 常用数据验证正则表达式释义(附:正则表达式常用符号)
- cadence PCB板级设计
- 大数据分析-excel常用技巧
- nginx + tomcat + redis 部署项目,解决session共享问题。
- MariaDB链接超时优化
- Xcode 高级调试技巧
- 《电脑音乐制作实战指南:伴奏、录歌、MTV全攻略》——第1篇 获取伴奏篇 第1章 MIDI音乐伴奏的获取与制作 1.1 电脑MIDI音乐与设备的介绍...
- 怎么自费出书方法步骤
- 33个地区发iPhone5,老外纳闷中国没人排队_-Chaz-_新浪博客
- 三创赛优秀作品_三创赛优秀作品.doc
- 互联网医院|智慧医院系统|线上看病购药更便捷
- Seaweed-FS综合使用测试
- IQ信号,IQ样本,IQ数据,constallation diagram(星座图)
- 贵州省安顺市谷歌卫星地图下载
- EdgeX 树莓派实践部署
- 商业分析_第一篇 价格弹性
- 数字经济数据2009-2019年、数字经济发展指标体系和测算2011-2020年、地级市数字经济数据2011-2019年、数字经济发展指数2011-2020年
热门文章
- bin文件编辑_为MediaWiki安装可视化编辑器VisualEditor
- 操作系统之I/O管理:4、缓冲区管理(单缓冲、双缓冲、循环缓冲、缓冲池)
- LeetCode篇之链表:83(去重问题)
- 使用valgrind检查内存问题
- C/C++编程操作Redis数据库,hiredis包装redis数据库操作接口及测试(增删改查与连接)
- 缩点【洛谷P1262】 间谍网络
- ACM-ICPC 2018 徐州赛区网络预赛G (单调队列)
- 集群和分布式部署有什么区别?
- JQuery------实现鼠标摁下抬起时div背景色改变
- pat Simulation Test for PAT(B) 9月4日