ActiveMQ 中可以通过以下方式设置消息的优先级:
- 在消息头中设置 JMSPriority 属性:
TextMessage message = session.createTextMessage("Hello");
message.setJMSPriority(3); // 优先级为3
producer.send(message);
JMSPriority 的范围是 0-9,数字越大优先级越高。
- 在发送消息时设置优先级:
MessageProducer producer = session.createProducer(queue);
producer.setPriority(3); // 发送消息的优先级为3
producer.send(message);
- 基于消息类型设置默认优先级:在 Broker 配置文件中设定。
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" >
<defaultEntry>
<prefix>ActionAudit</prefix>
<destinationEntry>
<queue>Action.Audit.Queue</queue>
<defaultEntry>
<priority>3</priority> <!-- ActionAudit 前缀的消息优先级为3 -->
</defaultEntry>
</destinationEntry>
</defaultEntry>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
- 基于发送者设置默认优先级:也是在 Broker 配置文件中设定。
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">">
<producerEntry>
<producerId>PRODUCER1</producerId>
<defaultEntry>
<priority>5</priority> <!-- PRODUCER1 发送的消息优先级为5 -->
</defaultEntry>
</producerEntry>
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>