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:
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.
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.