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
>