Jboss 失踪财产“;JMSXDeliveryCount“;从ActiveMQ消息

Jboss 失踪财产“;JMSXDeliveryCount“;从ActiveMQ消息,jboss,jms,activemq,Jboss,Jms,Activemq,根据链接- 消息应该有“JMSXDeliveryCount”用于尝试发送消息的次数 当从jconsole检查消息属性时,它将丢失,尽管其他Jms支持的属性如“JMSXGroupID”和“JMSXGroupSeq”可用 注:- 我使用了标准的activemq-5.14.2设置,并从win64启动它 使用JBoss服务器 JMSXDeliveryCount属性仅在消息传递一次后重新调度(会话恢复等)时可用。如果消息的传递计数为零,则从getPropertyNames()等返回的集合中将不存在JMS

根据链接- 消息应该有“JMSXDeliveryCount”用于尝试发送消息的次数

当从jconsole检查消息属性时,它将丢失,尽管其他Jms支持的属性如“JMSXGroupID”和“JMSXGroupSeq”可用

注:-

  • 我使用了标准的activemq-5.14.2设置,并从win64启动它
  • 使用JBoss服务器

  • JMSXDeliveryCount属性仅在消息传递一次后重新调度(会话恢复等)时可用。如果消息的传递计数为零,则从getPropertyNames()等返回的集合中将不存在JMSXDeliveryCount。

    有一个名为JMSXDeliveryCount的消息属性,它指示消息已传递了多少次。JMS 2第3.5.11节。0规范对JMSXDeliveryCount作了如下说明:

    当客户端接收到消息时,必须将JMS定义的消息属性JMSXDeliveryCount设置为消息已传递的次数。第一次收到消息时,它将被设置为1,因此值为2或更大表示消息已重新发送

    如果设置了JMSRedelivered消息头值,则JMSXDeliveryCount属性必须始终为2或更多。请参阅第3.4.7节“JMSReedelived”,了解有关JMSReedelived消息头的更多信息

    JMSXDeliveryCount属性的目的是允许使用应用程序识别特定消息是否正在重复重新传递,并采取适当的操作


    JMSXDeliveryCount属性的值不能保证完全正确。JMS提供程序不应保留此值以确保其值在发生故障时不会丢失。

    您能否在mq web控制台上查看JMSXDeliveryCount属性。请尝试hawtio控制台。@Nir Nope,尽管通过在代码中访问JMS消息解决了此问题,我们的代码正在将JMS解析为特定于客户端的消息pojo..,但错过了属性。不过,不确定为什么activemq控制台没有显示下面的属性,因为答案已经解释了,只有当消息重新传递给消费者时,此属性才会在mq控制台上可见。