ActiveMQ 优先队列简介
ActiveMQ 5.4版本支持优先队列,消息游标和消息存储(KahaDB 、JDBC)两个支持消息优先级,KahaDB 是基于文件持久化数据库,使用KahaDB是本地消息代理,是ActiveMQ 5.4版本默认存储。
怎么使用ActivefMQ 优先队列
开启prioritezedMessages 优先队列配置,默认是false。
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue="queueName" prioritizedMessages="true" />
</policyEntries>
</policyMap>
</destinationPolicy>
上面配置中的 queueName 支持通配符的形式,好比 queue = ">" 表示全部队列都支持优先级,queue = "myqueue" 表示myqueue 队列支持消息优先级。
通配符支持
. 是用于分割路径中的名称html
* 是匹配路径中任何名称git
> 是递归匹配名称开始到目标数据库
注意:不要在通配符">" 后面加任何字符串,添加也将被忽略。apache
ActiveMQ 队列优先级别
JDBC 消息存储,优先级别值范围是0~9,KahaDb 支持三种优先级别:低级别(<4) 默认(=4) 高级别(>4)。
ActiveMQ 优先级别使用方式
直接在JMS消息上面设置优先级 setJMSPriority()以下设置优先级为9:
producer.send(sentMessages, DeliveryMode.NON_PERSISTENT, 9, 0);
参考资料:spa
https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=tree;f=assembly/src/release/examples/conf;hb=HEAD代理
http://activemq.apache.org/wildcards.htmlcode