Hi Justin.
I have some kind of video conferencing app where I need to create many
addresses/queues for each session/call.
Setting the auto delete flag to false means that I will need to clean
unused addresses and queues manually with the help of a scheduler which
complicates the solution.

Is there any way to start taking into consideration auto delete delay? So
when failover is done, the queue is not deleted automatically but only
after a specified time?

Thanks! Best regards.

чт, 23 окт. 2025 г. в 17:51, Justin Bertram <[email protected]>:

> I tracked this behavior down to ARTEMIS-3525 [1]. On start the broker will
> explicitly delete empty queues that are to be auto-deleted.
>
> That said, if auto-creation is enabled and you're using a protocol where
> auto-creation is supported then the queue should be re-created when a
> message is sent to it or a consumer is created on it.
>
> Is there a particular reason that you don't want to delete queues
> immediately after failover when the queue auto-delete flag is set to true?
> Have you considered setting the auto-delete flag to false so that this
> doesn't happen?
>
>
> Justin
>
> [1] https://issues.apache.org/jira/browse/ARTEMIS-3525
>
> On Wed, Oct 22, 2025 at 8:10 PM Illia <[email protected]> wrote:
>
> > Hi Justin.
> > I have prepared a Java app for you. The link -
> >
> https://drive.google.com/file/d/1aLExH0nWTtWvdjFTw6KJIdid5wTXlJ9J/view?usp=sharing
> > Steps to reproduce the issue:
> > 1. Build Java app with *./mvnw clean package*
> > 2. Start docker compose *docker compose up* which will start java client
> > and 2 artemis nodes in replication mode (active and backup).
> > 3. After the application is started, an address with the name
> > "new-address" and a queue with the name "new-queue" are created.
> > 4. Stop active node with *docker stop artemis-node-a*
> > 5. Go to *http://localhost:8162/console/artemis
> > <http://localhost:8162/console/artemis> *where you can observe that
> > address was replicated and queue was not
> > [image: image.png]
> > [image: image.png]
> >
> > 6. The reason is that my queue is configured with autodelete:
> > [image: image.png]
> > 7. If you remove autoDelete and autoDeleteDeley lines and repeat
> > everything from the beginning, you will notice that both address and
> queue
> > are successfully replicated.
> >
> > My goal is to not delete queues immediately after failover when the queue
> > auto delete flag is set to true. Is it even possible?
> >
> > Thanks! Best regards.
> >
> > ср, 22 окт. 2025 г. в 06:07, Justin Bertram <[email protected]>:
> >
> >> Nothing in the address-settings seems problematic. Can you work up some
> >> instructions or ideally an automated reproducer so that I can observe
> the
> >> same behavior that you described?
> >>
> >>
> >> Justin
> >>
> >> On Tue, Oct 21, 2025 at 4:52 PM Illia <[email protected]> wrote:
> >>
> >> > Hi Justin.
> >> > This my settings in broker.xml:
> >> >
> >> > <address-setting match="#">
> >> >     <dead-letter-address>DLQ</dead-letter-address>
> >> >     <expiry-address>ExpiryQueue</expiry-address>
> >> >     <redelivery-delay>0</redelivery-delay>
> >> >
> >> >
> >> >
> >>
> <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-delete-queues>false</auto-delete-queues>
> >> >     <auto-delete-addresses>false</auto-delete-addresses>
> >> >
> >> >     <!-- The size of each page file -->
> >> >     <page-size-bytes>10M</page-size-bytes>
> >> >
> >> >     <!-- When we start applying the address-full-policy, e.g paging
> -->
> >> >     <!-- Both are disabled by default, which means we will use the
> >> > global-max-size/global-max-messages  -->
> >> >     <max-size-bytes>-1</max-size-bytes>
> >> >     <max-size-messages>-1</max-size-messages>
> >> >
> >> >     <!-- When we read from paging into queues (memory) -->
> >> >
> >> >     <max-read-page-messages>-1</max-read-page-messages>
> >> >     <max-read-page-bytes>20M</max-read-page-bytes>
> >> >
> >> >     <!-- Limit on paging capacity before starting to throw errors -->
> >> >
> >> >     <page-limit-bytes>-1</page-limit-bytes>
> >> >     <page-limit-messages>-1</page-limit-messages>
> >> > </address-setting>
> >> >
> >> >
> >> > ср, 22 окт. 2025 г. в 00:15, Justin Bertram <[email protected]>:
> >> >
> >> > > Can you provide the address settings that correspond to this queue?
> >> > >
> >> > > For what it's worth, setting the auto-delete message-count on the
> >> queue
> >> > to
> >> > > -1 is not normal as that means the broker will delete the queue
> >> > regardless
> >> > > of the number of messages it contains. It might make sense depending
> >> on
> >> > > your use-case, but folks typically don't want to delete their
> messages
> >> > > automatically.
> >> > >
> >> > >
> >> > > Justin
> >> > >
> >> > > On Tue, Oct 21, 2025 at 3:28 PM Illia <[email protected]>
> >> wrote:
> >> > >
> >> > > > Hi team. Could you please help me with the next issue.
> >> > > >
> >> > > > My cluster consists of two nodes with replication mode (live and
> >> > backup)
> >> > > > that are configured to auto delete queues.
> >> > > >
> >> > > > When my active node fails, I see that only addresses are
> replicated
> >> to
> >> > > the
> >> > > > backup node but not queues. Seems that the reason is that my
> queues
> >> are
> >> > > > configured for auto delete. Queue replication works fine without
> the
> >> > auto
> >> > > > delete flag. I tried to set up an auto delete delay but it seems
> >> that
> >> > it
> >> > > > still doesn’t work with failover.
> >> > > >
> >> > > > My goal is to not delete queues immediately after failover when
> the
> >> > queue
> >> > > > auto delete flag is set to true.
> >> > > >
> >> > > > Is there any way to do this?
> >> > > >
> >> > > > Here is my queue configuration in Java code:
> >> > > >
> >> > > >
> >> > > >
> >> > > >
> >> > > >
> >> > > >
> >> > > >
> >> > > >
> >> > > > *final QueueConfiguration queueConfig =
> >> > > >
> >> > > >
> >> > >
> >> >
> >>
> QueueConfiguration.of(queueName).setAddress(addressName).setRoutingType(RoutingType.ANYCAST).setAutoDelete(true).setAutoDeleteDelay(30000L).setAutoDeleteMessageCount(-1L).setPurgeOnNoConsumers(false).setNonDestructive(false);*
> >> > > >
> >> > > > Thanks! Best regards.
> >> > > >
> >> > >
> >> >
> >>
> >
>

Reply via email to