我正在使用JMS Queue和听取它的MDB。 我有一个重试机制,所以当抛出异常时,将发生对事务的回滚并且操作将重新执行/
我想实现Message_retry_number,每次执行“onMessage”时,我都可以编写当前的执行重试次数。 我听说我可以通过消息对象的Header检索它,但是在属性或网络中找不到任何内容。
任何人都有任何线索?
谢谢, 射线。
答案 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实现是必需的,它将包含您需要的信息。