gpt4 book ai didi

jboss - MDB 事务重试间隔

转载 作者:行者123 更新时间:2023-12-01 09:43:24 25 4
gpt4 key购买 nike

我们可以控制 MDB 中的事务重试间隔吗?如果是这样,请提供示例或指导我查看文档。我们要为 MDB 事务设置 3 分钟的时间间隔。期望是,如果查询第一次失败,则它会在 3 分钟后重试。

最佳答案

维拉姆;

查看 Message Redelivery 的 Hornet 文档.您需要考虑的问题是:

  • 重新投递延迟(您指定为 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" 的消息 header 值,如果该数字等于最大重新传递次数,只需抑制任何异常并提交交易。

关于jboss - MDB 事务重试间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7307852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com