Bug 656226 - [RFE] - Qpid federation "queue route"
Summary: [RFE] - Qpid federation "queue route"
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: Messaging_Programming_Reference
Version: 1.3
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: 2.0
: ---
Assignee: Alison Young
QA Contact: ecs-bugs
URL:
Whiteboard:
Depends On: 660526 689666
Blocks: 660531
TreeView+ depends on / blocked
 
Reported: 2010-11-23 09:46 UTC by ppecka
Modified: 2012-09-21 12:57 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Enhancement
Doc Text:
When there are multiple subscriptions on an AMQP queue, messages are distributed among subscribers. For example, two queue routes being fed from the same queue will each receive a load-balanced number of messages. If fanout behaviour is required instead of load-balancing, use an exchange route.
Clone Of:
Environment:
Last Closed: 2011-06-24 01:43:43 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description ppecka 2010-11-23 09:46:56 UTC
Description of problem:
We have four brokers in topology A,B,C,D on all of them we have the same exchange E and queue Q , Q is bound to E with the same routing key on all brokers. Lets have "Queue route" from A(Q) -> B(E), A(Q) -> C(E), B(Q) -> D(E), C(Q) -> D(E). When we publish 5 messages on A, then usually we can see 2 messages on B(Q), 3 messages on C(Q), 5 messages on D(Q). The problem lays in B and C where i would expect 5 messages in their Q.

A -----> B -----> D
  \              ^
   `---> C -----/
               

Version-Release number of selected component (if applicable):
python-qmf-0.7.946106-14.el5
python-qpid-0.7.946106-14.el5
qmf-0.7.946106-22.el5
qmf-devel-0.7.946106-22.el5
qpid-cpp-client-0.7.946106-22.el5
qpid-cpp-client-devel-0.7.946106-22.el5
qpid-cpp-client-devel-docs-0.7.946106-22.el5
qpid-cpp-client-ssl-0.7.946106-22.el5
qpid-cpp-server-0.7.946106-22.el5
qpid-cpp-server-cluster-0.7.946106-22.el5
qpid-cpp-server-devel-0.7.946106-22.el5
qpid-cpp-server-ssl-0.7.946106-22.el5
qpid-cpp-server-store-0.7.946106-22.el5
qpid-cpp-server-xml-0.7.946106-22.el5
qpid-java-client-0.7.946106-12.el5
qpid-java-common-0.7.946106-12.el5
qpid-java-example-0.7.946106-12.el5
qpid-tools-0.7.946106-11.el5


How reproducible:
Always


Actual results:
If batch of N of messages is published on A it does not appear on B,C as N messages on B and N messages on C, but the batch on A is split between them (as they are read from Q on A)

Expected results:
If batch of N of messages is published on A it should appear as N messages on B(E) and C(E). Or documentation should state about such situation, when two Queue routes are pulling messages form one queue.


Additional info:

Comment 1 Ted Ross 2010-11-23 13:30:09 UTC
What you are seeing is expected behavior.  You have created "queue" routes from A -> B and A -> C.  Both routes feed from the same queue on A.  This is a load-balancing scenario.  In other words, both B and C have subscriptions to A.Q.  When there are multiple subscriptions on an AMQP queue, the messages are distributed among the subscribers.

If you want fanout behavior (i.e. 5 messages to both B and C), you should use an exchange route from A.E.

Comment 2 ppecka 2010-11-23 13:51:27 UTC
(In reply to comment #1)
> What you are seeing is expected behavior.  You have created "queue" routes from
> A -> B and A -> C.  Both routes feed from the same queue on A.  This is a
> load-balancing scenario.  In other words, both B and C have subscriptions to
> A.Q.  When there are multiple subscriptions on an AMQP queue, the messages are
> distributed among the subscribers.
> 
> If you want fanout behavior (i.e. 5 messages to both B and C), you should use
> an exchange route from A.E.

[ RFE ] Messaging User Guide - Chapter 8.1.1. Queue Routes
conclusion from comment #1 should take place in documentation

Comment 5 ppecka 2011-04-19 09:29:09 UTC
--> VERIFIED

Comment 6 Misha H. Ali 2011-06-01 05:23:40 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
When there are multiple subscriptions on an AMQP queue, messages are distributed among subscribers. For example, two queue routes being fed from the same queue will each receive a load-balanced number of messages. If fanout behaviour is required instead of load-balancing, use an exchange route.

Comment 7 Misha H. Ali 2011-06-07 07:09:57 UTC
This bug is now documented in the release notes and can be viewed at the below link:

http://documentation-stage.bne.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/2.0/html-single/MRG_Release_Notes/index.html#tabl-MRG_Release_Notes-RHM_Update_Notes-RHM_Update_Notes


Note You need to log in before you can comment on or make changes to this bug.