> Another penalty I suppose is queue scanning every
"address-queue-scan-period"?

Unless you've disabled scanning (i.e. by setting address-queue-scan-period
to -1) the broker is already doing most of the scanning work. It happens in
its own thread and isn't CPU intensive.

Also, consider that tracking & deleting a temporary queue isn't free
either. You're essentially trading real-time clean-up with periodic
clean-up.


Justin

On Tue, Apr 8, 2025 at 12:47 AM Vilius Šumskas
<vilius.sums...@rivile.lt.invalid> wrote:

> Understood. So one probable performance penalty would be due to queues
> sitting on disk. Another penalty I suppose is queue scanning every
> "address-queue-scan-period"? If we have thousands of queues and the scan
> needs to check every queue for messages and consumer count I suppose this
> is also relatively slow operation?
>
> --
>     Vilius
>
> -----Original Message-----
> From: Justin Bertram <jbert...@apache.org>
> Sent: Monday, April 7, 2025 8:04 PM
> To: users@activemq.apache.org
> Subject: Re: how to separate permissions for replyTo temporary queues
>
> > I'm wondering what is the performance penalty of having
> auto-delete-queues/auto-delete-addresses enabled on a broker with tens of
> thousands of queues versus using temporary queues?
>
> Predicting performance is tricky given all the variables, but just looking
> only at the relative "cost" of using a temporary queue vs. a durable queue
> the durable queue will cost more simply because the disk is involved.
> However, that may not actually have a statistically significant impact on
> your overall use-case. Only testing will tell.
>
> > If performance impact is considerable, can it be alleviated, by let's
> say, enabling auto-delete-queues/auto-delete-addresses only on replyTo
> queues?
>
> This was my original suggestion. Notice the match in my example
> address-setting was "replyTo.#".
>
> I think it would make sense to add a new address-setting to make queues
> temporary. I opened ARTEMIS-5386 [1] to track this.
>
>
> Justin
>
> [1] https://issues.apache.org/jira/browse/ARTEMIS-5386
>
> On Mon, Apr 7, 2025 at 6:39 AM Vilius Šumskas 
> <vilius.sums...@rivile.lt.invalid>
> wrote:
>
> > Thank you for your response.
> >
> > Suggestion regarding switching to persistent queues looks interesting.
> > I'm wondering what is the performance penalty of having
> > auto-delete-queues/auto-delete-addresses enabled on a broker with tens
> > of thousands of queues versus using temporary queues? Currently we
> > have tens of thousands of durable queues + max one temporary queue per
> > every durable queue acting as a replyTo queue (not all temporary
> > queues exist at all times obviously). If performance impact is
> > considerable, can it be alleviated, by let's say, enabling
> > auto-delete-queues/auto-delete-addresses
> > only on replyTo queues?
> >
> > --
> >     Vilius
> >
> > -----Original Message-----
> > From: Justin Bertram <jbert...@apache.org>
> > Sent: Friday, April 4, 2025 5:18 PM
> > To: users@activemq.apache.org
> > Subject: Re: how to separate permissions for replyTo temporary queues
> >
> > > <security-setting
> >
> > match="^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0
> > -9a-fA-F]{12}$">
> >
> > I would not expect this syntax to work. The match for a
> > security-setting must conform to the wildcard syntax [1] which
> specifically states:
> >
> >     ...wildcard characters cannot be used like wildcards in a regular
> > expression.
> >
> > > Are we doing something wrong? Should we just rely on the fact that
> > > it
> > would be very difficult to guess other temp queue names?
> >
> > I don't think you're doing anything _wrong_ per se. If you want to use
> > temporary queues then this is a trade-off you'll have to make.
> >
> > However, if you really want to lock everything down then I recommend
> > you don't use temporary queues and just let the broker deal with
> > automatically creating and deleting the queues. You can name the
> > queues with a particular prefix and assign permissions to roles as
> appropriate, e.g.:
> >
> >     <address-settings>
> >        ...
> >        <address-setting match="replyTo.#">
> >           <auto-create-queues>true</auto-create-queues>
> >           <auto-delete-queues>true</auto-delete-queues>
> >           <auto-create-addresses>true</auto-create-addresses>
> >           <auto-delete-addresses>true</auto-delete-addresses>
> >        <address-setting>
> >        ...
> >     </address-settings>
> >     ...
> >     <security-settings>
> >        ...
> >        <security-setting match="replyTo.app1.#">
> >           <permission type="send" roles="app1" />
> >           <permission type="consume" roles="app1" />
> >        </security-setting>
> >        <security-setting match="replyTo.app2.#">
> >           <permission type="send" roles="app2" />
> >           <permission type="consume" roles="app2" />
> >        </security-setting>
> >        ...
> >     </security-settings>
> >
> > Then each of your applications could use something like this:
> >
> >     ...
> >     Session replyTo = session.createQueue("replyTo.app1." +
> > java.util.UUID.randomUUID().toString())
> >     ...
> >     message.setJMSReplyTo(replyTo);
> >     ...
> >
> > This is all off the top of my head so there might be some errors in
> > there, but hopefully you get the idea. Let me know if you have further
> questions!
> >
> >
> > Justin
> >
> > [1]
> >
> > https://activemq.apache.org/components/artemis/documentation/latest/wi
> > ldcard-syntax.html#wildcard-syntax
> >
> > On Fri, Apr 4, 2025 at 8:14 AM Vilius Šumskas
> > <vilius.sums...@rivile.lt.invalid>
> > wrote:
> >
> > > Hello,
> > >
> > > I’m wondering how one separates permissions of two different roles
> > > for temporary replyTo queues? Let’s say we have two external users
> > > which can consume from their durable queues, but they respond to
> > > replyTo queue created by producer (RPC flow model). We can only set
> > > one namespace for the queue and limit these users by:
> > >
> > > <temporary-queue-namespace>temp</temporary-queue-namespace>
> > > <security-setting match="temp.#">
> > > <permission type="send" roles="roleofbothusers" />
> > > </security-setting>
> > >
> > > Or  we could do:
> > >
> > > <security-setting
> > > match="^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-
> > > [0 -9a-fA-F]{12}$"> <permission type="send" roles=" roleofbothusers
> > > " /> </security-setting>
> > >
> > > But this doesn’t forbit user1 to send messages to temporary queues
> > > of user2. ReplyTo queues obviously have just random IDs and there is
> > > no way to differentiate between user1 temporary queues and user2
> > > temporary
> > queues.
> > >
> > > Are we doing something wrong? Should we just rely on the fact that
> > > it would be very difficult to guess other temp queue names?
> > >
> > > --
> > >    Best Regards,
> > >
> > >     Vilius Šumskas
> > >     Rivile
> > >     IT manager
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscr...@activemq.apache.org
> > For additional commands, e-mail: users-h...@activemq.apache.org For
> > further information, visit: https://activemq.apache.org/contact
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@activemq.apache.org
> For additional commands, e-mail: users-h...@activemq.apache.org
> For further information, visit: https://activemq.apache.org/contact
>
>

Reply via email to