【问题标题】:Configuring the expiry time for the messages destined to the "Expired message address" in Hornetq在 Hornetq 中配置发往“过期消息地址”的消息的过期时间
【发布时间】:2016-03-19 02:00:19
【问题描述】:

我在 Hornetq 中配置了一个消息过期目的地,如下所示

<address-setting match="#">
      <dead-letter-address>jms.queue.error</dead-letter-address>
      <expiry-address>jms.queue.error</expiry-address>
         <max-delivery-attempts>3</max-delivery-attempts>
      <redelivery-delay>2000</redelivery-delay>
      <max-size-bytes>10485760</max-size-bytes>       
      <message-counter-history-day-limit>10</message-counter-history-day-limit>
      <address-full-policy>BLOCK</address-full-policy>
      <redistribution-delay>60000</redistribution-delay>
</address-setting>

一旦超过过期时间,消息就会被重定向到过期地址。这些消息在到期地址上无限期地存在,有没有办法为这些消息提供到期时间,以便它们在到期地址上只存在有限的时间?

【问题讨论】:

    标签: java jms hornetq


    【解决方案1】:

    如果您至少使用 2.3,您可以为到期本身创建一个设置,但不指定到期地址:

       <address-setting match="jms.queue.error">
             <dead-letter-address>ExpiryOfExpiry</dead-letter-address>
             <expiry-address>ExpiryOfExpiry</expiry-address>
             <max-delivery-attempts>3</max-delivery-attempts>
             <expiry-delay>3600000</expiry-delay> <!-- one hour... or use whatever you want -->
             <max-size-bytes>10485760</max-size-bytes>       
             <address-full-policy>PAGE</address-full-policy>
             <redistribution-delay>60000</redistribution-delay>
        </address-setting>
    

    ExpiryOfExpiry 将是一个空地址.. 所以消息只会发送给任何人。它将在地址上得到确认,然后被删除。

    我们没有针对这种情况的测试,但它应该可以工作。如果您发现任何问题,请告诉我。

    【讨论】:

    • 你能测试我的答案吗?如果您这样做,我将不胜感激。谢谢
    • 感谢您的回答。我目前忙于不同的任务。我将在几天内测试此解决方案,并肯定会在此处更新结果。
    猜你喜欢
    • 1970-01-01
    • 2015-01-30
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多