============================================================================
原创作品,允许转载。转载时请务必以超链接形式标明原始出处、以及本声明。
请注明转自:http://yunjianfei.iteye.com/blog/
============================================================================
最近有个需求是要使用activeMQ作为一个完全优先级队列,且里面的任务都是耗时很长的任务,主要特点如下:
1. 多个producer,多个consumer
2.consumer取来消息后,会去执行一些长时间的任务,期间阻塞consumer
3.没有消费的消息,中间可能会修改优先级
4.优先级高的消息必须先被消费
在使用过程中,发生了一些意外状况,因为长时间的任务,导致activeMQ判定consumer为Slow Consumers 导致在取消息的时候不是完全按照优先级来取消息。解决方案如下:
首先,在activemq.xml中配置,使其支持优先级队列以及针对Slow-Consumer做一些策略。
<destinationPolicy> <policyMap> <policyEntries> <policyEntry queue=">" producerFlowControl="false" prioritizedMessages="true" useCache="false" expireMessagesPeriod="0" queuePrefetch="1" /> <policyEntry queue=">" strictOrderDispatch="false" /> <policyEntry queue=">" > <pendingMessageLimitStrategy> <constantPendingMessageLimitStrategy limit="0"/> </pendingMessageLimitStrategy> <messageEvictionStrategy> <oldestMessageWithLowestPriorityEvictionStrategy/> </messageEvictionStrategy> </policyEntry> </policyEntries> </policyMap> </destinationPolicy>
其次,因为每个消息都是长时间的操作,一定要等消息里的命令完全执行完毕后,再向ActiveMQ发送ACK,这样就可以保证所有的消息都是按照优先级来消费的。
相关推荐
ActiveMQ队列消息过期时间设置和自动清除解决方案.docx
SpringBoot整合ActiveMQ消息队列和双向队列、点对点与发布订阅,可以参考我的博客文章进行学习https://blog.csdn.net/sujin_/article/details/82956386
PHP过滤(selector)接收ActiveMQ的指定队列或者主题消息
详细描述了ActiveMQ消息过期-时间设置和自动清除解决方案。
NULL 博文链接:https://wukele.iteye.com/blog/2308104
ActiveMQ 消息队列
activemq的queue队列模式的maven,spring的demo
可用于调试MSMQ、RabbitMQ、ActiveMQ三种消息队列 其中MSMQ支持Active、Binary、XML格式(要勾选事务) RabbitMQ支持逐条接发、批量接发、RPC回调模式、新建队列、建立持久化队列、连接测试等功能。
activemq的topic队列模式的maven,spring的demo
百度spring整合activemq 发现几乎都只是在xml文件配置固定的消息队列而且太麻烦。并没有根据需求进行动态生成主题和队列。本文档参考了纯粹的activemq java代码和百度上的demo,很简洁的实现了动态消息队列的生成和...
springboot整合activeMq的使用,队列,主题,消息手动确认,重发机制
ActiveMQ消息队列主题订阅Spring整合
SpringBoot快速玩转ActiveMQ消息队列,jdk8下的简要版介绍。
1、介绍ActiveMQ5.x消息队列基础特性和本地快速安装 2、SpringBoot2.x整合ActiveMQ实战之点对点消息
NULL 博文链接:https://ihenu.iteye.com/blog/2270078
ActiveMQ消息队列的简单实例和注解。附有文档说明。
主要介绍了PHP使用ActiveMQ实现消息队列的方法,结合实例形式详细分析了PHP使用ActiveMQ实现消息队列具体步骤、相关操作技巧与注意事项,需要的朋友可以参考下
ActiveMQ的队列模式,初学ActiveMQ的,一个很好的体验、入门,代码注释很清楚,JMS的java使用步骤
作为消息中间件的MQ在java开发中起着举足轻重的地位,无论是ActiveMQ、RabbitMQ、还是RokcetMQ至少要会一个,否则别说自己是java程序员。Java自学网整理了目前行业最常用的消息中间件视频供大家学习。