Is it possible to set expiration for queues or addresses if we use durable subscriptions in STOMP?
Artemis automatically deletes auto-created queues by default, but "durable" subscription queues remain forever. I've tried setting the expiry-delay
address-setting
which will delete the messages if no expiry-address
is defined. However, Artemis keeps the subscription queues anyway which causes the server to run out of memory. I have to delete container in Docker every 3 days. As you can imagine, this is not good at all.
Unfortunately, it often happens when the client closes the browser without unsubscribing.
Here is the relevant portion of broker.xml
:
<address-setting match="#">
<expiry-delay>3600000</expiry-delay> <!-- 1 hours -->
<default-address-routing-type>MULTICAST</default-address-routing-type>
<dead-letter-address>DLQ</dead-letter-address>
<!--<expiry-address>ExpiryQueue</expiry-address>-->
<redelivery-delay>15000</redelivery-delay>
<max-delivery-attempts>10</max-delivery-attempts>
<max-size-bytes>-1</max-size-bytes>
<address-full-policy>PAGE</address-full-policy>
<auto-create-addresses>true</auto-create-addresses>
<auto-delete-addresses>true</auto-delete-addresses>
<auto-create-queues>true</auto-create-queues>
<auto-delete-queues>true</auto-delete-queues>
<auto-create-jms-queues>true</auto-create-jms-queues>
<auto-create-jms-topics>true</auto-create-jms-topics>
<auto-delete-jms-queues>true</auto-delete-jms-queues>
<auto-delete-jms-topics>true</auto-delete-jms-topics>
</address-setting>