Bug 1019150

Summary: [AMQP 1.0] can't set alternate-exchange for subscription queue
Product: Red Hat Enterprise MRG Reporter: Petr Matousek <pematous>
Component: qpid-cppAssignee: Gordon Sim <gsim>
Status: CLOSED CURRENTRELEASE QA Contact: Zdenek Kraus <zkraus>
Severity: medium Docs Contact:
Priority: unspecified    
Version: DevelopmentCC: esammons, gsim, iboverma, jross, zkraus
Target Milestone: 3.0   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qpid-cpp-0.22-20 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1010399    

Description Petr Matousek 2013-10-15 08:35:20 UTC
Description of problem:

Using 0-10 it's possible to define an alternate exchange for the link (applied to the subscription queue) when receiving from exchange, ie:

"amq.direct/key;{link:{x-declare:{alternate-exchange: 'amq.fanout'}}}"

As the link scoped x-declare element is missing in the amqp1.0 address string, it's not possible to define the alternate exchange similar way for amqp1.0.

The intended mechanism for controlling the configuration of subscription queues is through the newly introduced 'topic' entities. These allow various subscription queue properties and an exchange to be tied together . However the properties that can be configured are limited to those passed in the 0-10 arguments. It does not include alternate-exchange.

https://issues.apache.org/jira/browse/QPID-5228

Version-Release number of selected component (if applicable):
qpid-cpp-*-0.22-19

How reproducible:
100%

Steps to Reproduce:
2. n/a


Actual results:
Unable to define alternate exchange for subscription queues

Expected results:
Alternate exchange may be defined for subscription queues

Additional info:

Comment 1 Gordon Sim 2013-10-15 12:51:16 UTC
Fixed upstream: https://svn.apache.org/r1532306

To configure a subscription queue, you need to create a topic that specifies the underlying exchange and any special options to be applied to all subscriptions from that exchange.

That can be done using the 'create' QMF method on the broker, using type 'topic' and in addition to the name, specifying at least the 'exchange' property.

There is a little test utility upstream that does this, e.g.

<qpid-home>/cpp/src/tests/qpidt create topic my-topic exchange=amq.direct alternate-exchange=amq.fanout

(assuming all python paths are set). Then creating a receiver for node 'my-topic' should result in a queue bound to amq.direct, with amq.fanout as the alternate exchange.

Comment 2 Zdenek Kraus 2014-05-23 10:56:59 UTC
this was tested on RHEL 6.5 i686 && x86_64 with following packages:
perl-qpid-0.22-12.el6
perl-qpid-debuginfo-0.22-12.el6
python-qpid-0.22-14.el6
python-qpid-qmf-0.22-31.el6
qpid-cpp-client-0.22-40.el6
qpid-cpp-client-devel-0.22-40.el6
qpid-cpp-client-devel-docs-0.22-40.el6
qpid-cpp-client-rdma-0.22-40.el6
qpid-cpp-debuginfo-0.22-40.el6
qpid-cpp-server-0.22-40.el6
qpid-cpp-server-devel-0.22-40.el6
qpid-cpp-server-ha-0.22-40.el6
qpid-cpp-server-linearstore-0.22-40.el6
qpid-cpp-server-rdma-0.22-40.el6
qpid-cpp-server-xml-0.22-40.el6
qpid-java-client-0.22-6.el6
qpid-java-common-0.22-6.el6
qpid-java-example-0.22-6.el6
qpid-proton-c-0.7-1.el6
qpid-qmf-0.22-31.el6
qpid-tools-0.22-12.el6
rh-qpid-cpp-tests-0.22-40.el6


works as expected.