You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Ulf Lilleengen <lu...@redhat.com> on 2018/02/28 14:52:52 UTC
Address settings for multicast addresses
Hi,
I have a question/observation regarding address settings and
max-size-bytes on Artemis 2.4.0 and if they apply to addresses or queues.
I have tested addresses with a max-size-bytes set to 1Mb and using the
FAIL policy in address settings for 'myqueue'. I wanted to see if these
limits apply at the queue or address level. I'm experimenting with 1, 2,
4 and 8 queues like in this example for 4 queues:
<addresses>
<address name="myqueue">
<multicast>
<queue name="s1" />
<queue name="s2" />
<queue name="s3" />
<queue name="s4" />
</multicast>
</address>
</addresses>
I use an AMQP based client that sends messages until it fails. Here is
how many messages I am able to send before it fails in the different
configurations;
For 1 queue: 2053 messages
For 2 queues: 1853 messages per queue = 3706 messages
For 4 queues: 1511 messages per queue = 6044 messages
For 8 queues: 1104 messages per queue = 8832 messages
From this experiment its appears as if the limit is per queue, but the
numbers don't seem to add up or the limits are not enforced strictly.
Could someone shed some light as to how the limit is applied?
Would it make sense to be able to apply this across queues? (i.e. sum of
all queues for an address)?
If not, is there a way for me to limit the number of queues in the case
of multicast addresses to ensure I can enforce a per-address limit in
that way?
Best regards,
Ulf
Re: Address settings for multicast addresses
Posted by Ulf Lilleengen <lu...@redhat.com>.
Ah, that makes sense. So in that case, the limit will be per-address +
some small bookkeeping for each queue.
I think that explains what I'm seeing, and perhaps if I used some larger
sized messages in my test the number would have a lower variance.
Thanks Martyn!
Ulf
On 02/28/2018 05:38 PM, Martyn Taylor wrote:
> Ulf,
>
> We don't copy messages across queues. If you send a single message to a
> multicast address it's only stored in memory once, and a reference to the
> message is stored on the queue. You don't have noQueues * messages in
> memory, but you do have some additional message references in memory.
>
> If you change your test so that it uses anycast, and actually send more
> messages you should see the numbers even out. Though, please be aware it's
> a memory estimate, it's not an exact calculation, there will be some
> variance.
>
> Cheers
>
> On Wed, Feb 28, 2018 at 2:52 PM, Ulf Lilleengen <lu...@redhat.com> wrote:
>
>> Hi,
>>
>> I have a question/observation regarding address settings and
>> max-size-bytes on Artemis 2.4.0 and if they apply to addresses or queues.
>>
>> I have tested addresses with a max-size-bytes set to 1Mb and using the
>> FAIL policy in address settings for 'myqueue'. I wanted to see if these
>> limits apply at the queue or address level. I'm experimenting with 1, 2, 4
>> and 8 queues like in this example for 4 queues:
>>
>>
>> <addresses>
>> <address name="myqueue">
>> <multicast>
>> <queue name="s1" />
>> <queue name="s2" />
>> <queue name="s3" />
>> <queue name="s4" />
>> </multicast>
>> </address>
>> </addresses>
>>
>>
>> I use an AMQP based client that sends messages until it fails. Here is how
>> many messages I am able to send before it fails in the different
>> configurations;
>>
>>
>> For 1 queue: 2053 messages
>> For 2 queues: 1853 messages per queue = 3706 messages
>> For 4 queues: 1511 messages per queue = 6044 messages
>> For 8 queues: 1104 messages per queue = 8832 messages
>>
>>
>> From this experiment its appears as if the limit is per queue, but the
>> numbers don't seem to add up or the limits are not enforced strictly. Could
>> someone shed some light as to how the limit is applied?
>>
>> Would it make sense to be able to apply this across queues? (i.e. sum of
>> all queues for an address)?
>>
>> If not, is there a way for me to limit the number of queues in the case of
>> multicast addresses to ensure I can enforce a per-address limit in that way?
>>
>> Best regards,
>>
>> Ulf
>>
>
--
Ulf
Re: Address settings for multicast addresses
Posted by Martyn Taylor <mt...@redhat.com>.
Ulf,
We don't copy messages across queues. If you send a single message to a
multicast address it's only stored in memory once, and a reference to the
message is stored on the queue. You don't have noQueues * messages in
memory, but you do have some additional message references in memory.
If you change your test so that it uses anycast, and actually send more
messages you should see the numbers even out. Though, please be aware it's
a memory estimate, it's not an exact calculation, there will be some
variance.
Cheers
On Wed, Feb 28, 2018 at 2:52 PM, Ulf Lilleengen <lu...@redhat.com> wrote:
> Hi,
>
> I have a question/observation regarding address settings and
> max-size-bytes on Artemis 2.4.0 and if they apply to addresses or queues.
>
> I have tested addresses with a max-size-bytes set to 1Mb and using the
> FAIL policy in address settings for 'myqueue'. I wanted to see if these
> limits apply at the queue or address level. I'm experimenting with 1, 2, 4
> and 8 queues like in this example for 4 queues:
>
>
> <addresses>
> <address name="myqueue">
> <multicast>
> <queue name="s1" />
> <queue name="s2" />
> <queue name="s3" />
> <queue name="s4" />
> </multicast>
> </address>
> </addresses>
>
>
> I use an AMQP based client that sends messages until it fails. Here is how
> many messages I am able to send before it fails in the different
> configurations;
>
>
> For 1 queue: 2053 messages
> For 2 queues: 1853 messages per queue = 3706 messages
> For 4 queues: 1511 messages per queue = 6044 messages
> For 8 queues: 1104 messages per queue = 8832 messages
>
>
> From this experiment its appears as if the limit is per queue, but the
> numbers don't seem to add up or the limits are not enforced strictly. Could
> someone shed some light as to how the limit is applied?
>
> Would it make sense to be able to apply this across queues? (i.e. sum of
> all queues for an address)?
>
> If not, is there a way for me to limit the number of queues in the case of
> multicast addresses to ensure I can enforce a per-address limit in that way?
>
> Best regards,
>
> Ulf
>