ActiveMQ 优先队列(priority queues)

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