> The broker shouldn’t delete a queue associated to shared durable
subscriptions even if no consumers are active at that moment and should
store all the messages in the meanwhile. Am I right?
You are correct. However, it appears to me that you've actually configured
the broker to override the default semantics here and remove the queue
you're asking about. Your auto-delete settings are very aggressive, i.e.:
<address-setting match="#">
...
<auto-delete-queues>true</auto-delete-queues>
<auto-delete-created-queues>true</auto-delete-created-queues>
<auto-delete-queues-delay>1000</auto-delete-queues-delay>
<auto-delete-queues-message-count>0</auto-delete-queues-message-count>
<auto-delete-addresses>true</auto-delete-addresses>
<auto-delete-addresses-delay>1000</auto-delete-addresses-delay>
</address-setting>
This will basically delete *any* queue (whether or not it was auto-created)
that has 0 messages and sits idle (i.e. without a consumer) for 1 second. I
recommend you dial this back a bit so that only auto-created queues are
auto-deleted and perhaps extend the time-to-wait, e.g.:
<address-setting match="#">
...
<auto-delete-queues>true</auto-delete-queues>
<auto-delete-created-queues>false</auto-delete-created-queues>
<auto-delete-queues-delay>300000</auto-delete-queues-delay>
<auto-delete-queues-message-count>0</auto-delete-queues-message-count>
<auto-delete-addresses>true</auto-delete-addresses>
<auto-delete-addresses-delay>300000</auto-delete-addresses-delay>
</address-setting>
Setting "auto-delete-created-queues" to "true" is rarely a good idea. Is
there a specific reason you did that?
Justin
On Tue, Oct 10, 2023 at 10:58 AM Modanese, Riccardo
<[email protected]> wrote:
> Hello,
> my issue is not completely bound to Artemis (involves Camel also) so
> I’m trying to ask here first.
>
> From the JMS specs 2.0 and AMQP I found, the behavior of the shared
> durable subscriptions is still the same as for JMS 1.x specs.
> The broker shouldn’t delete a queue associated to shared durable
> subscriptions even if no consumers are active at that moment and should
> store all the messages in the meanwhile. Am I right?
>
> In my scenario I have a Camel AMQP consumer (Spring Boot + Camel 3.21 –
> qpid JMS connection factory) connected to Artemis broker (2.28.0) with
> shared durable subscriptions. The client id is uniquely set by a specific
> extension of the standard factory I did.
>
> The Camel subscription is (from my camel.xml):
>
>
> <from uri="amqp:topic://something/#?
>
> selector=key='value'&
>
> asyncConsumer=true&
>
> acknowledgementModeName=CLIENT_ACKNOWLEDGE&
>
> transacted=false&
>
> durableSubscriptionName=myConsumer&
>
> subscriptionShared=true&
>
> concurrentConsumers=2&
>
> maxConcurrentConsumers=5"/>
>
>
> This consumer is running on a different Docker container than the broker.
> If I kill the consumer’s container, then after a while the associated
> queue is automatically deleted.
>
> This is my address settings in broker.xml
>
> <address-setting match="#">
> <dead-letter-address>DLQ</dead-letter-address>
> <expiry-address>ExpiryQueue</expiry-address>
> <!-- <expiry-delay>10</expiry-delay> -->
> <redelivery-delay>0</redelivery-delay>
> <!-- with -1 only the global-max-size is in use for limiting -->
> <max-size-bytes>-1</max-size-bytes>
>
> <message-counter-history-day-limit>10</message-counter-history-day-limit>
> <address-full-policy>PAGE</address-full-policy>
> <auto-create-queues>true</auto-create-queues>
> <auto-create-addresses>true</auto-create-addresses>
> <auto-create-jms-queues>true</auto-create-jms-queues>
> <auto-create-jms-topics>true</auto-create-jms-topics>
> <auto-delete-queues>true</auto-delete-queues>
> <auto-delete-created-queues>true</auto-delete-created-queues>
> <auto-delete-queues-delay>1000</auto-delete-queues-delay>
> <auto-delete-queues-message-count>0</auto-delete-queues-message-count>
> <auto-delete-addresses>true</auto-delete-addresses>
> <auto-delete-addresses-delay>1000</auto-delete-addresses-delay>
> </address-setting>
> …..
> <wildcard-addresses>
> <routing-enabled>true</routing-enabled>
> <delimiter>/</delimiter>
> <any-words>#</any-words>
> <single-word>+</single-word>
> </wildcard-addresses>
>
>
>
> Regards
>
> Riccardo Modanese
>