一、简介

Queue中的消息是按照顺序被分发到consumers的。然而,当你有多个consumers同时从相同的queue中提取消息时,

你将失去这个保证。因为这些消息是被多个线程并发的处理。有的时候,保证消息按照顺序处理是很重要的。

如,你可能不希望在插入订单操作结束之前执行更新这个订单的操作。

二、使用

ActiveMQ从4.x版本起开始支持Exclusive Consumer。 Broker会从多个consumers中挑选一个consumer来处理queue中

所有的消息,从而保证了消息的有序处理。如果这个consumer失效,那么broker会自动切换到其它的consumer。

可以通过DestinationOptions 来创建一个Exclusive Consumer,如下:

queue = new ActiveMQQueue("TEST.QUEUE?consumer.exclusive=true");
consumer = session.createConsumer(queue);

还可以给consumer设置优先级,以便针对网络情况进行优化,如下:

queue = new ActiveMQQueue("TEST.QUEUE?consumer.exclusive=true&consumer.priority=10");

A.         当在接收信息的时候有一个或者多个备份接收消息者和一个独占消息者的同时接收时候,无论两者创建先后,在接收的时候,均为独占消息者接收。

B.         当在接收信息的时候,有多个独占消费者的时候,只有一个独占消费者可以接收到消息。

C.         当有多个备份消费者和多个独占消费者的时候,当所有的独占消费者均close的时候,只有一个备份消费者接到到消息。

解决一个队列并行问题:

通过排队服务

拆分业务逻辑 consumer 处理不同的业务,处理完后响应,确认消息消费成功,当10条全部消费完毕,

又或者是根据具体业务情况,例如只有8条消息处理成功,程序是继续执行,记录日志,事后处理,还是立即数据回滚?灵活处理

JMS学习十一 ActiveMQ Consumer高级特性之独有消费者(Exclusive Consumer)相关推荐

  1. JMS学习十 ActiveMQ支持的传输协议

    JMS学习(ActiveMQ支持的传输协议) ActiveMQ提供了一种连接机制,这种连接机制使用传输连接器(TransportConnector)实现客户端与代理(client - to - bro ...

  2. activemq的高级特性:消息存储持久化

    activemq的高级特性之消息存储持久化 有基于文件的,数据库的,内存的.默认的是基于文件的,在安装目录/data/kahadb.在conf/activemq.xml文件中. <persist ...

  3. JMS学习(2):ActiveMQ简单介绍以及安装

    现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了消息通信的规范JM ...

  4. JMS学习(五)--ActiveMQ中的消息的持久化和非持久化 以及 持久订阅者 和 非持久订阅者之间的区别与联系...

    一,消息的持久化和非持久化 ①DeliveryMode 这是传输模式.ActiveMQ支持两种传输模式:持久传输和非持久传输(persistent and non-persistent deliver ...

  5. ActiveMQ Destination高级特性

    1.1通配符 1"." 用于作为路径上名字间的分割符 2">" 用于递归的匹配任何以这个名字开始的Destination 3       "*& ...

  6. JMS学习(3):--ActiveMQ简单的HelloWorld实例

    第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...

  7. JMS学习九 ActiveMQ的消息持久化到Mysql数据库

    1.将连接Mysql数据库驱动包,放到ActiveMQ的lib目录下 2,修改ActiveMQ的conf目录下的active.xml文件,修改数据持久化的方式 2.1  修改原来的kshadb的持久化 ...

  8. Java学习记录 类的高级特性篇

    Java类包 Java JDK API中提供了类功能,它们封装为类包 类名冲突 JDK API 中提供的类,在同一类包 同类名 会导致编译器无法执行 ,要把类包分开或更改类名 完整的类路径 完整的类名 ...

  9. JMS学习六(ActiveMQ消息传送模型)

    JMS学习六(ActiveMQ消息传送模型) ActiveMQ 支持两种截然不同的消息传送模型:PTP(即点对点模型)和Pub/Sub(即发布 /订阅模型),分别称作:PTP Domain 和Pub/ ...

最新文章

  1. NetCore+MySql+EF 数据库生成实体模型
  2. linux C语言 socket编程教程(附两个例子)(socket教程)
  3. python 还原九宫格图片_用Python做一个好玩的朋友圈九宫格抽奖
  4. 三、HDFS中的Python 和JavaAPI
  5. CF1313D:Happy New Year(状压dp)
  6. 一个程序详细研究DataReader(转)
  7. JDBC基础篇(MYSQL)——自定义JDBCUtil工具类
  8. C++ TBB 文档手册地址
  9. 算法实践——改良的求解数独的暴力搜索法
  10. Activiti6.0(十二)子流程
  11. 学习vue之前应该有哪些基础知识
  12. 阿里云GPU计算型实例规格族gn6i配置性能详解
  13. HDU 1290 献给杭电五十周年校庆的礼物
  14. java学习体会论文_关于学习java的心得体会
  15. 攻防世界逆向高手题之Guess-the-Number
  16. 上拉电阻与下拉电阻的作用总结
  17. 十进制ASCII字符代码表用电脑计算器转换为其他进制
  18. Retrofit原理学习总结
  19. msu文件无法运行_msu文件怎么安装,msu文件安装步骤方法详解
  20. 苹果固件验证关闭服务器时间,大神展示苹果设备降级工具:恢复关闭验证固件...

热门文章

  1. 没有bug队——加贝——Python 41,42
  2. python编程题计算矩阵对角线_Python练习题 028:求3*3矩阵对角线数字之和
  3. 【Python】单线程异步多线程多进程实例
  4. 数据分析--使用Web API(应用编程接口)以自动请求GitHub网站的特定信息为例爬取数据,附完整的Python代码详解
  5. hbase-1.3.2安装
  6. 《剑指offer》第五十三题(数组中数值和下标相等的元素)
  7. Linux学习总结(十六)系统用户及用户组管理
  8. Bluetooth Obex
  9. 撸表情开发过程中使用腾讯云存储的接入实例分享
  10. Android(1)—Mono For Android 环境搭建及破解