Java 配置发送至“邮箱”的邮件的到期时间;过期信息地址“;大黄蜂

Java 配置发送至“邮箱”的邮件的到期时间;过期信息地址“;大黄蜂,java,jms,hornetq,Java,Jms,Hornetq,我已经在Hornetq中配置了一个消息到期目的地,如下所示 <address-setting match="#"> <dead-letter-address>jms.queue.error</dead-letter-address> <expiry-address>jms.queue.error</expiry-address> <max-delivery-attempts>3<

我已经在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>

jms.queue.error
jms.queue.error
3.
2000
10485760
10
块
60000

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

如果您使用的是至少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>

到期日
到期日
3.
3600000
10485760
页
60000
ExpireyOfeExpiry将是一个空地址。。因此,信息只会发送给任何人。它将在地址上确认,然后被删除


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

您能测试我的答案吗?如果你愿意,我将不胜感激。谢谢你的回答。我目前正忙于不同的任务。我将在几天后测试这个解决方案,并在这里更新结果。