MDB 事务重试间隔

发布于 2024-12-02 21:25:00 字数 98 浏览 2 评论 0原文

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

Can we control the transaction retry interval in MDB? If so, please provide an example or direct me to the documentation. We want to set up a time interval of 3 min for MDB transactions. The desire is that if the query fails \first time, then it retries after 3 min of time has elapsed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风筝在阴天搁浅。 2024-12-09 21:25:00

瓦伊拉姆;

查看 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”的消息标头值,如果该数字等于最大重新传递次数,则只需抑制任何异常并提交事务即可。

Vairam;

Take a look at the Hornet Documentation for Message Redelivery. The issues you need to consider are:

  • The redelivery delay (you indicated 3 minutes).
  • The number of times the message should be redelivered.
  • If you elect not to redeliver indefinitely, the final action that occurs when the last redelivery attempt fails which could be:
    • Drop the message.
    • Enqueue the message to the designated DLQ.
    • Enqueue the message to some other queue.

Setting the redelivery delay

Delayed redelivery is defined in the address-setting configuration.

Example:

 <!-- delay redelivery of messages for 3m -->
 <address-setting match="jms.queue.exampleQueue">
    <redelivery-delay>300000</redelivery-delay>
 </address-setting>

Setting the maximum number of redeliveries and DLQ configuration

This can be defined declaratively by specifying the DLQ configuration in the address-setting configuration:

Example:

 <!-- 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>

If you want to drop the message after the designated number of redelivery failures, check the message header value of "JMSXDeliveryCount" and if that number is equal to the maximum redeliveries, simply supress any exceptions and commit the transaction.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文