Hi folks, I'd like to shine light on an idea around doing shared topic subscriptions using AMQP 1.0, something useful in general but required in particular for client work on supporting JMS 2.0 (QPIDJMS-207).
A quick summary of the idea is that: - Support would be identified via a 'SHARED-SUBS' connection or link capability to allow clients to detect support/lack-of. - A 'shared' source capability would be used to identify sharing is desired. - Sharing would by default be container-id scoped as with links, but a 'global' source capability would be used to identify wish to share a subscription identity across any connection regardless of container-id. - The link name is used to convey the subscription name, with a naming "<subname>[|suffix]" scheme to facilitate disambiguating different links referencing the same subscription name from the same container-id where needed (as only one link of a given name is allowed between containers, per direction). I split out a specific JIRA for this https://issues.apache.org/jira/browse/QPIDJMS-220 which covers things in [much] more detail, as there are a great many to try and include here and I'd like to reference it there for other [broker] JIRAs later. Feel free to comment here (or there) after giving it a read. I've implemented much of this now for the JMS client to validate the idea, as there have been others in the past that wouldn't work for one reason or other. The connection capability handling mentioned is in there, but the link capability handling is still outstanding as support needs added to Proton first for that. I've put a 0.20.0-beta cut up in a temporary staging repo in case anyone would like to check it out, its at: https://repository.apache.org/content/repositories/orgapacheqpid-1093. Note though that you wont get very far with using the shared subs bits yet, due to needing server support. Gordon also put together some examples using Proton python at https://github.com/grs/amqp_subscriptions to show how this could be supported in the other APIs. There are simple client examples of the various subscription combinations there can be and how that influences the protocol interactions. There is also a little broker example, though note it only implements some of the behaviours, and won't work with the JMS client currently due to its capabilities checking. Robbie --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
