activemq - JMS 消息优先级不适用于消息

标签 activemq hornetq

我需要设置消息优先级,以便接收者在低优先级消息之前消耗高优先级消息。

首先我尝试使用 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/

相关文章:

java - 无法将 Spring MVC 应用程序连接到 AmazonMQ Broker

java - 是否要求在提交结束时发送 jms 消息?

spring-mvc - Spring Web 连接到嵌入 Jboss 服务器 7.1.1 的 HornetQ JMS

java - activemq jdbc 性能/延迟

activemq master 不会放弃网络故障

java - Apache Camel 脚本问题

java - 使用 Alpakka 手动确认 ActiveMQ 消息

java - 当队列持久时,HornetQ Producer 变慢

jboss7.x - 为什么带有 Hornet Que - 消息驱动 Bean 的 Jboss AS 7.1 不能使用池连接?

spring - JNDI 不适用于 HornetQ 和 tomcat