2011-10-12 116 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文檔來了解這類事情,各種設置器都被標記以指示哪些設備不適用於發送的消息 –