我在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>
一旦超过到期时间,消息就会被重定向到到期地址。这些消息无限期地存在于到期地址上,是否有办法为这些消息提供到期时间,以便它们只能在有效期限内过期?
答案 0 :(得分:0)
如果您使用的是至少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将是一个空地址..因此该消息将被发送给nobody。它将在地址上被删除,然后被删除。
我们没有对此方案进行测试,但它应该可行。如果您发现任何问题,请告诉我。