You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Pavel Moravec <pm...@redhat.com> on 2011/12/08 16:24:10 UTC

Federation link drops messages when one destination queue is full?

Hi,
I spotted a weird behavior of queue route when destination broker rejects a message due to one full queue. See this scenario:

(dst-broker):
qpid-config add exchange fanout my_exchange
qpid-config add queue limited_queue --max-queue-count=10
qpid-config add queue unlimited_queue
qpid-config bind my_exchange limited_queue
qpid-config bind my_exchange unlimited_queue

(src-broker):
qpid-config add queue test_queue
qpid-route queue add dst-broker src-broker my_exchange test_queue
./spout -c 15 test_queue

(dst-broker):
qpid-stat -q | grep queue
  queue                                          dur  autoDel  excl  msg   msgIn  msgOut  bytes  bytesIn  bytesOut  cons  bind
  limited_queue                                                        10    10      0       0      0        0         0     2
  unlimited_queue                                                      11    11      0       0      0        0         0     2
qpid-stat -e | grep exchange
  exchange            type     dur  bind  msgIn  msgOut  msgDrop  byteIn  byteOut  byteDrop
  my_exchange         fanout           2    10     20       0        0       0        0

(src-broker):
qpid-stat -q | grep queue
  queue                       dur  autoDel  excl  msg   msgIn  msgOut  bytes  bytesIn  bytesOut  cons  bind
  test_queue                                         0    15     15       0      0        0         0     1

That means:
- on dest.broker, 1 queue (the limtied one) bound to the fanout exchange has 10 messages, while the unlimited has 11. 
- test_queue on src.broker sent out all 15 messages, while dest.broker received 11 of them only. The remaining 4 were lost.

Is that expected behavior? Specifically the 11 vs. 10 messages and (some) message lost is something I would not expect..



Kind regards,
Pavel



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Re: Federation link drops messages when one destination queue is full?

Posted by Gordon Sim <gs...@redhat.com>.
On 12/08/2011 03:24 PM, Pavel Moravec wrote:
> Hi,
> I spotted a weird behavior of queue route when destination broker rejects a message due to one full queue. See this scenario:
>
> (dst-broker):
> qpid-config add exchange fanout my_exchange
> qpid-config add queue limited_queue --max-queue-count=10
> qpid-config add queue unlimited_queue
> qpid-config bind my_exchange limited_queue
> qpid-config bind my_exchange unlimited_queue
>
> (src-broker):
> qpid-config add queue test_queue
> qpid-route queue add dst-broker src-broker my_exchange test_queue
> ./spout -c 15 test_queue
>
> (dst-broker):
> qpid-stat -q | grep queue
>    queue                                          dur  autoDel  excl  msg   msgIn  msgOut  bytes  bytesIn  bytesOut  cons  bind
>    limited_queue                                                        10    10      0       0      0        0         0     2
>    unlimited_queue                                                      11    11      0       0      0        0         0     2
> qpid-stat -e | grep exchange
>    exchange            type     dur  bind  msgIn  msgOut  msgDrop  byteIn  byteOut  byteDrop
>    my_exchange         fanout           2    10     20       0        0       0        0
>
> (src-broker):
> qpid-stat -q | grep queue
>    queue                       dur  autoDel  excl  msg   msgIn  msgOut  bytes  bytesIn  bytesOut  cons  bind
>    test_queue                                         0    15     15       0      0        0         0     1
>
> That means:
> - on dest.broker, 1 queue (the limtied one) bound to the fanout exchange has 10 messages, while the unlimited has 11.
> - test_queue on src.broker sent out all 15 messages, while dest.broker received 11 of them only. The remaining 4 were lost.
>
> Is that expected behavior? Specifically the 11 vs. 10 messages and (some) message lost is something I would not expect..

The 11 message over the link will result in a successful enqueue on 
unlimited_queue, then will fail when trying to enqueue on limited_queue. 
This will terminate the link session. The lost messages are a result of 
not using acknowledged transfer on the link. If you instead did:

   qpid-route queue add --ack 1 dst-broker src-broker my_exchange test_queue

then messages would not be lost (though you would have a degree of 
duplication, since the successfully enqueued message on unlimited would 
still also be on the test_queue).

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org