MDB事务重试间隔

时间:2011-09-05 12:08:09

标签: jboss jms hornetq message-driven-bean

我们可以控制MDB中的事务重试间隔吗?如果是,请提供示例或指导我阅读文档。我们希望为MDB事务设置3分钟的时间间隔。希望是如果查询第一次失败,那么它会在经过3分钟后重试。

1 个答案:

答案 0 :(得分:3)

Vairam;

查看Message Redelivery的大黄蜂文档。您需要考虑的问题是:

  • 重新发送延迟(你指的是3分钟)。
  • 应重新传递邮件的次数。
  • 如果您选择无限期重新投放,则上次重新投放尝试失败时发生的最终操作可能是:
    • 删除邮件。
    • 将邮件排入指定的DLQ。
    • 将邮件排入其他队列。

设置重新发送延迟

延迟重新传递在地址设置配置中定义。

示例:

 <!-- 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”的邮件标题值,如果该数字等于最大重新传递,则只需删除任何例外和提交交易。