Description
QMF uses a number of messaging patterns, including direct to single destination and request-response using the reply-to header for the address of the response message. This enhancement allows direct addressing to be done using the topic exchange rather than the direct exchange. This has a number of advantages:
1) It allows a QMF domain to be configured using only one topic exchange, which is simpler than pairing a direct and a topic exchange.
2) It allows security policy to be applied (details below) because the topic-wildcard feature can be used in broker ACLs.
3) It allows for scaling into large networks of brokers where inter-broker links are summarized and direct topic routing keys are defined hierarchically based on topology.
Details on security policy:
With this enhancement, it is possible to write a very concise policy (using broker ACLs) that restricts user roles to be "QMF Agent Only", or "QMF Console Only", or any combination of these. Furthermore, since a QMF domain is tied to an exchange, these policies can be independently applied to different domains.
Code changes needed:
1) QMFv2 implementation uses the topic exchange as the basis for direct addresses (agent direct, and console reply-to)
2) The legacy C++ agent (qpid::agent) must be able to send a message to any arbitrary reply-to.
3) The broker-agent must be able to send a message to any arbitrary reply-to.
Note that the broker and C++ agents currently only use the "routing-key" portion of the reply-to. They hard-code the "exchange" portion as amq.direct. This is arguably a bug in its own right.