I'm currently trying to tidy up some of the message conversion code inside
the Java Broker, and wondering what the correct approach is with reply-to.

In 1.0 the reply-to address is a simple string (which may have some
structure when the OASIS Addressing spec is finalised, but until now can
really be thought of as opaque).

In 0-10 the reply-to consists of an exchange and a routing-key pair...
(which means that if you want to reply to a given queue you can use the
default no-name exchange, and the queue name as the routing key).

The naive approach for a 1.0 address "foo" is (I guess) to look up on the
broker side to see if the given there is an exchange named "foo" (in which
case translate to 0-10 {exchange="foo", routing-key=""}) or a queue named
"foo" (in which case translate to a 0-10 {exchange="",routing-key="foo").
However what if there is neither an exchange nor a queue named foo...

In the opposite direction if you have an 0-10 address
{exchange="foo",routing-key="bar"} how do we translate that into a 1-0
address.

Does the C++ broker have an answer for this yet?

My current train of thought is that I'll translate 1-0 addresses of the
form "foo/bar" into exchange="foo", routing-key="bar" (and will also treat
1.0 links to destinations of that form accordingly).  Addresses which begin
with a "/" will be treated as AMQP Global addresses (per the emerging
specs)... for conversion to 0-10 purposes that will be the no-name exchange
and the address will go into the routing key.

Addresses with no "/" will be treated as a queue - unless there is no queue
in which case it will fall back to looking for an exchange (this is the
Java Broker's default behaviour for any address)... Where there is no queue
or exchange the reply-to conversion will treat it as per a global address
{exchange="",routing-key=address}.

As above, does the C++ broker have a better answer already?

-- Rob

Reply via email to