> 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
<riccardo.modan...@eurotech.com.invalid> 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'&amp;
>
>     asyncConsumer=true&amp;
>
>     acknowledgementModeName=CLIENT_ACKNOWLEDGE&amp;
>
>     transacted=false&amp;
>
>     durableSubscriptionName=myConsumer&amp;
>
>     subscriptionShared=true&amp;
>
>     concurrentConsumers=2&amp;
>
>     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
>

Reply via email to