4.7.5. Subscribe to a Direct Exchange
This is the most straight-forward method to implement. Create a receiver using an address comprised of the exchange name and the routing key. For example, create a receiver on direct exchange "finance
" using the "reports
" key of interest:
- C++
Receiver receiver = session.createReceiver("finance/reports")
- Python
receiver = session.receiver('finance/reports')
Subscription using a shared queue may be created by naming the subscription queue and defining it non-exclusive. For example:
- C++
Receiver receiver = session.createReceiver("finance/quick-publish;{link:{name:my-subscription, x-declare:{exclusive:False}}}");
- Python
receiver = session.receiver('finance/quick-publish;{link:{name:my-subscription, x-declare:{exclusive:False}}}')
x-bindings
. For example:
- C++
Receiver receiver = session.createReceiver("my-subscription;{create: always, node:{x-bindings: [{exchange: 'finance', key: 'quick-publish'}]}}");
- Python
receiver = session.receiver('my-subscription;{create: always, node:{x-bindings: [{exchange: 'finance', key: 'quick-publish'}]}}')
my-subscription
" and bound it to the direct exchange "finance
" with the key "quick-publish
".
Both Link-scoped x-declare
and Node-scoped x-bindings
clauses are not supported in AMQP 1.0, hence we request the capability of a shared subscription:
- C++
Receiver receiver = session.createReceiver("finance/quick-publish;{node: {capabilities:[shared]}, link: {name: 'my-subscription'}}");