2011-10-12 31 views
0

我在通过nms设置消息优先级时遇到问题。消息发送到队列一切正常,但优先级被忽略。ActiveMQ:设置消息优先级不起作用

我使用下面的代码:

message.NMSPriority = MsgPriority.High; 

不管什么样的价值为我的消息优先级设置,使用ActiveMQ的浏览器,我可以看到的是,优先级总是被设置为4

我也试着添加一些原始标题,如:

message.Properties["priority"] = 2; 
message.Properties["PRIORITY"] = 5; 
message.Properties["NMSPriority"] = 7; 
message.Properties["JMSPriority "] = 9; 

但它没有帮助。

我也有添加的属性

prioritizedMessages="true" 

到activemq.xml中的文件。我可以通过ActiveMQ浏览器手动发送消息。

那么问题在哪里?我做错了什么?

回答

2

消息优先级始终由发送消息的生产者设置。类的setter将只允许您在收到消息后更改值,通常仅用于单元测试或在提供者之间转换消息。要在每条消息的基础上设置消息优先级,请查看MessageProducer接口中的不同发送方法。

+1

非常感谢你,你的回答解决了我的问题!但有趣的是,我可以通过setter类和其他东西来设置消息属性,但不是优先级。 – Chris

+0

您可以参考JMS API文档来了解这类事情,各种设置器都被标记以指示哪些设备不适用于发送的消息 –