Robert Godfrey wrote:
I think we need clarity about whether we are defining a format for
*JMSDestination* or for some other AMQP abstraction of
consumer/producer/link.

As I understood it, the idea was to try to define JMS Destinations over AMQP in terms of some more general format for configuration of AMQP senders/receivers.

The JMS definition is quite clear that the destination represents only
the address ("A Destination object encapsulates a provider-specific
address") - therefore properties of queues, etc should not form part
of its definition.   In particular consider the case where you use
setReplyTo(JMSDestination) ...  the *only* information that is
actually sent over the wire is (correctly) the address.

The JMS definition also states that "Since Destination is an administered object, it may contain provider-specific configuration information in addition to its address."

The reply-to is certainly an important case to consider though. In AMQP 0-10 in particular there is a very rigid structure defined for exchanging that information.

Even where a less restricted format on the wire is used, the question of what is valid to convey in reply-to is an interesting one. I myself see the notion of an address to an automatically created entity as less problematic in this regard than the attachment of producer and/or consumer specific configuration (which to me is more clearly independent of the address itself).

In the case above. if you use

dest.D = MyQueue; {auto-create={durable=true, ...}, ...}

as a destination for ReplyTo then the receiver of the message will
have to create the destination as the equivalent of

dest.D = MyQueue

The receiving client will not hear that it is supposed to create the
queue and make it durable.

JMS further mandates that the destination you receive on your incoming
message should have equality with the original address as set.  This
means that *only* the address can be examined in .equals() tests...,
hashCode(), etc...  Therefore making queue properties part of the
JMSDestination seems to be somewhat misleading.

If we were discussing the configuration for AMQP 1-0 style links then
I would completely agree that having everything on the one line would
make sense...

For JMSDestinations I am more opposed.

What in your view would be the ideal way to allow the JMS API to be used unaltered and yet (a) support different exchanges such as the headers and xml exchanges more cleanly, (b) allow a subscription that is implemented as more than one binding and (c) allow properties of senders and receivers to be configured?

The Destination abstraction is very tempting as an extension point of sorts and as a means to provide configuration independent of any code changes. I accept this is not without its problems.

The current Qpid JMS client does in my view need some urgent attention here however. The existing 'binding url' notation is restrictive and confusing and even the behaviour of the standard destination types is in my view not ideal.

--Gordon.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscr...@qpid.apache.org

Reply via email to