You are right that I can define a more specific address-setting for the $.artemis.internal, I was using the doc for 2.19.0 which is the broker version I am using and it was not clear about how the address-settings apply if there are multiple matches but i see it explain well in the latest doc.
On a different note, the 2 ring queue $.artemis.internal.{myAddress}.queue.multicast.retro and $.artemis.internal.{myAddress}.queue.anycast.retro created by the broker are connected to the $.artemis.internal.{myAddress}.address.retro address and their consumers would be all the queues in myAddress address right ? Thus i should not set auto-delete-queues for the $.artemis.internal.{myAddress}.address.retro address otherwise when no subscriber is subscribed to myAddress the 2 ring queues above are lost and the retroactive configuration is broken. Here is my address-settings: <address-settings> <address-setting match="#"> <dead-letter-address>DLQ</dead-letter-address> <expiry-address>ExpiryQueue</expiry-address> <redistribution-delay>60000</redistribution-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>false</auto-delete-queues> <auto-delete-jms-queues>false</auto-delete-jms-queues> <default-consumer-window-size>0</default-consumer-window-size> </address-setting> <address-setting match="TOPIC.#"> <retroactive-message-count>1</retroactive-message-count> <auto-delete-queues>true</auto-delete-queues> <auto-delete-queues-delay>0</auto-delete-queues-delay> <auto-delete-queues-message-count>-1</auto-delete-queues-message-count> </address-setting> <address-setting match="$.artemis.internal.#.address.retro"> <auto-delete-queues>false</auto-delete-queues> <!-- because there are 2 ring queues connect to this address? --> <auto-delete-addresses>true</auto-delete-addresses> </address-setting> </address-settings> Thanks Thai Le On Wed, 29 Mar 2023 at 12:31, Justin Bertram <jbert...@apache.org> wrote: > Any address-setting specified with match="#" will apply to the internal > retroactive resources. Typically this isn't a problem. Do you expect this > will be a problem in your case? If so, why? > > There is no "negative" address matching to match some and ignore others. > You can just have your normal match="#" and then have another set of > address-settings using match="$.artemis.internal.#" with the settings > appropriate for your use-case. > > > Justin > > On Wed, Mar 29, 2023 at 11:09 AM Thai Le <lnthai2...@gmail.com> wrote: > > > Justin, > > Thank you for your suggestion. Retroactive queue is indeed what I need. > > However the document said that by enabling > > retroactive-message-count on an address the broker will create an > internal > > address $.artemis.internal.{sourceAddress}.queue.multicast.retro (giving > > that my source address is multicast). Would this internal address > affected > > by my configuration for <address-setting match=#> ? If it is, is there a > > negative address matching to say: apply these settings for all addresses > > except those started with $.artemis.internal.# ? > > > > Regards > > > > Thai Le > > > > On Sat, 25 Mar 2023 at 18:28, Justin Bertram <jbert...@apache.org> > wrote: > > > > > Technically speaking, there is no way to configure a "topic" in > > broker.xml > > > at all. However, you can configure addresses, queues, and routing > types - > > > the 3 components of the broker's addressing model which can support the > > > semantics of JMS topics. See the documentation [1] [2] for more > > information > > > on that. > > > > > > That said, if you want a *new* JMS topic subscriber to receive the last > > > message sent to the topic then you can configure a retroactive address > > [3] > > > with a retroactive-message-count of 1. > > > > > > Using a retroactive address means you shouldn't have to use a durable > > > subscription so your second question is really moot. However, if you > > really > > > wanted to clean up durable subscription queues you could use the > > > auto-delete-* settings we currently have. > > > > > > > > > Justin > > > > > > [1] > > > > > > > > > https://activemq.apache.org/components/artemis/documentation/latest/address-model.html > > > [2] > > > > > > > > > https://activemq.apache.org/components/artemis/documentation/latest/jms-core-mapping.html > > > [3] > > > > > > > > > https://activemq.apache.org/components/artemis/documentation/latest/retroactive-addresses.html > > > > > > > > > On Sat, Mar 25, 2023 at 6:07 AM Thai Le <lnthai2...@gmail.com> wrote: > > > > > > > Hello, > > > > Is there a way to configure a topic in broker.xml so that > > > > 1. New subscriber can get the last message sent to the topic (like > the > > > > stock value example), I assume this need last-value-queue=true and > > > > durable=true > > > > 2. When there is no consumer connect to the subscriber queue for x > > > minutes > > > > the subscriber queue should be auto deleted (subscription can't be > > > > terminated from consumer side because there is no guarantee that it > can > > > > terminate gracefully). Durable=false seem to be a solution here > > > > As you can see, setting for durable seem to be conflicting for my > use > > > > case. Is there a way to satisfy both 1 and 2? > > > > > > > > Regards > > > > Thai Le > > > > > > > > > > > > > -- > > Where there is will, there is a way > > > -- Where there is will, there is a way