Fraser,

This is all great feedback, thanks again (and apologies for delayed response).

The concept of a 'shared subscription' is I think an important one to be able to model with 1.0. I'll give that some more thought and come back with some suggestions.

I also agree it is important to be able to control what happens when a (slow or disconnected) subscriber starts building up a backlog of messages. In many cases I think this is something that should really be a policy on the exchange or 'topic' (i.e. how much backlog are any of the subscribers allowed to build and what happens when they exceed that).

It may also be important to allow some per-subscription control. AMQP 1.0 allows 'capabilities' to be requested (for the link, or for the source) and this is an extension point that could be used (however capabilities are simple strings, not name-value pairs). It also allows link properties to be specified, which would be another mechanism we could use and as it is name-values would be more suitable for setting per-subscription backlog sizes perhaps.

The intention for selectors when used with an exchange is to filter *before* enqueueing, i.e. to further restrict the set of messages the subscriber sees without having those build up in some broker side temp queue. That isn't yet done, but I have a JIRA open for it.

[Specifically with respect to the headers exchange, I'm not sure it offers much benefit over selectors (once working as expected). I would need to do some benchmarking to be sure, but the matching logic in the headers exchange is not particularly clever and my guess would be there would be little difference in performance as compared with evaluation of an equivalent selector.]

The selector syntax the c++ broker supports (in 0.22) is as defined in the registered extension. Though there may be one or two gaps still to be implemented (e.g. access to all the AMQP 1.0 defined fields) it does not deviate into non-standard syntax in any way. The c++ client should be able to use selectors against the java broker over 1.0 (I haven't yet got around to testing that however), or indeed anything else that supports that selector syntax (e.g. SwiftMQ).

I very much agree with the desire to get greater interoperablity and cohesion, both within Qpid and more broadly for AMQP. My intention when writing the notes was to describe how the client maps to 1.0 and separately how 1.0 maps to the broker, in order to be more mindful of alternative mixes of components.

I think the key with the 1.0 work is to identify the scenarios that require extensions to the core specification and use the 1.0 defined extension points in an intuitive and natural way to expose the required functionality. The extensions can then be registered or refined and ultimately progressed to standards.

Thanks again for all the feedback, it is very helpful!

--Gordon

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to