我需要设置消息优先级,以便接收者在低优先级消息之前消耗高优先级消息。
首先我尝试使用 message.setJMSPriority() 方法来设置优先级,但它在 HornetQ 和 ActiveMQ 中不起作用,所以最后我使用 setPriority() 方法设置消息生产者的优先级,现在工作正常。
为什么 Messsge.setJMSPriority() 在任何 JMS 供应商实现中都不起作用?为什么我们需要设置 Producer 的优先级而不是消息本身来设置消息的优先级?那么Messsge.setJMSPriority()方法有什么用呢?
如有任何建议或评论,我们将不胜感激。
最佳答案
要回答这个问题,您所需要做的就是阅读 setJMSPriority 方法的 API 文档,它会告诉您原因。这是相关文本。
Sets the priority level for this message.
JMS providers set this field when a message is sent. This method can be used to change the value for a message that has been received.
JMS 提供程序(ActiveMQ、HornetMQ 等)将发送时的生产者中的优先级设置为默认值 4,或者设置为您设置生产者使用的任何值,因此在发送之前设置该值消息本身不会产生任何效果。
关于activemq - JMS 消息优先级不适用于消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6788240/