【发布时间】:2011-11-10 14:14:13
【问题描述】:
我们可以控制 MDB 中的事务重试间隔吗?如果是这样,请提供示例或将我引导至文档。我们希望为 MDB 事务设置 3 分钟的时间间隔。希望是,如果查询 \first time 失败,则在 3 分钟后重试。
【问题讨论】:
标签: jboss jms hornetq message-driven-bean
我们可以控制 MDB 中的事务重试间隔吗?如果是这样,请提供示例或将我引导至文档。我们希望为 MDB 事务设置 3 分钟的时间间隔。希望是,如果查询 \first time 失败,则在 3 分钟后重试。
【问题讨论】:
标签: jboss jms hornetq message-driven-bean
维拉姆;
查看 Message Redelivery 的 Hornet 文档。您需要考虑的问题是:
设置重新投递延迟
延迟重新投递在地址设置配置中定义。
例子:
<!-- delay redelivery of messages for 3m -->
<address-setting match="jms.queue.exampleQueue">
<redelivery-delay>300000</redelivery-delay>
</address-setting>
设置最大重新投递次数和DLQ配置
这可以通过在地址设置配置中指定DLQ配置来声明式定义:
例子:
<!-- undelivered messages in exampleQueue will be sent to the dead letter address
deadLetterQueue after 3 unsuccessful delivery attempts
-->
<address-setting match="jms.queue.exampleQueue">
<dead-letter-address>jms.queue.deadLetterQueue</dead-letter-address>
<max-delivery-attempts>3</max-delivery-attempts>
</address-setting>
如果您想在指定的重新传递失败次数后删除消息,请检查 "JMSXDeliveryCount" 的消息头值,如果该数量等于最大重新传递次数,只需抑制任何异常并提交事务。
【讨论】: