使用ProducerTemplate设置activemq优先级

时间:2014-11-25 22:33:02

标签: java apache-camel activemq

是否可以这样做?

我正在尝试使用以下方式发送到队列:

producerTemplate.sendBodyAndProperty("activemq:queue.queue", message, "JMSPriority", priority);

我已经设置了JMSConfiguration:

JmsConfiguration jmsConfiguration = new JmsConfiguration(pooledConnectionFactory);
jmsConfiguration.setDeliveryPersistent(false); // do not store a copy of the messages on the queue
jmsConfiguration.setPreserveMessageQos(true);
jmsConfiguration.setExplicitQosEnabled(true);

我也在activemq.xml启用了排队:

<policyEntry queue=">" prioritizedMessages="true" useCache="false" expireMessagesPeriod="0" queuePrefetch="1" >
</policyEntry>

然而,当我使用producertemplate发送消息时,activemq中显示的优先级为0:

enter image description here

即使我正常发送消息(producerTemplate.sendBodyAndProperty("activemq:queue.queue", message)),优先级也会显示为4。

1 个答案:

答案 0 :(得分:2)

JMSPriority应该是标题而不是属性。

producerTemplate.sendBodyAndHeader("activemq:queue.queue", message, "JMSPriority", priority);