ActiveMQ中如何设置消息的优先级?

ActiveMQ 中可以通过以下方式设置消息的优先级:

  1. 在消息头中设置 JMSPriority 属性:
TextMessage message = session.createTextMessage("Hello");
message.setJMSPriority(3);  // 优先级为3
producer.send(message);
JMSPriority 的范围是 0-9,数字越大优先级越高。
  1. 在发送消息时设置优先级:
MessageProducer producer = session.createProducer(queue);
producer.setPriority(3);  // 发送消息的优先级为3
producer.send(message); 
  1. 基于消息类型设置默认优先级:在 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> 
  1. 基于发送者设置默认优先级:也是在 Broker 配置文件中设定。
<destinationPolicy>
  <policyMap>
    <policyEntries>
      <policyEntry topic=">"> 
        <producerEntry> 
            <producerId>PRODUCER1</producerId> 
            <defaultEntry>
                <priority>5</priority> <!-- PRODUCER1 发送的消息优先级为5 -->
            </defaultEntry>
        </producerEntry>
      </policyEntry>  
    </policyEntries>
  </policyMap>
</destinationPolicy>