检索JMS消息重试次数

时间:2011-01-18 12:06:29

标签: transactions java-ee jms ejb-3.0 jboss5.x

我正在使用JMS Queue和听取它的MDB。 我有一个重试机制,所以当抛出异常时,将发生对事务的回滚并且操作将重新执行/

我想实现Message_retry_number,每次执行“onMessage”时,我都可以编写当前的执行重试次数。 我听说我可以通过消息对象的Header检索它,但是在属性或网络中找不到任何内容。

任何人都有任何线索?

谢谢, 射线。

3 个答案:

答案 0 :(得分:13)

请参阅javax.jms.Message.getIntProperty。属性名称为“JMSXDeliveryCount”。

答案 1 :(得分:1)

执行此操作的唯一标准方法是查看JMSXDeliveryCount属性。但是,您应该知道JMS规范声明JMS定义的属性(以JMSX开头的属性)是可选的 - 因此它取决于您的特定提供程序是否支持此属性,并在每种情况下都设置。

答案 2 :(得分:1)

来自oracle教程[https://docs.oracle.com/javaee/7/tutorial/jms-concepts003.htm#BNCEH]部分45.3.7.2消息属性:

JMS API提供了一些以JMSX开头的预定义属性名称。 JMS提供程序只需要实现其中一个JMSXDeliveryCount(它指定消息传递的次数);其余的是可选的。在应用程序中使用这些预定义属性或用户定义属性是可选的。

JMSXDeliveryCount实现是必需的,它将包含您需要的信息。