OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

amqp-bindmap message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: JMS Destination handling



----- Original Message -----
> From: "Shawn McAllister" <Shawn.Mcallister@SolaceSystems.com>
> To: "Robbie Gemmell" <rgemmell@redhat.com>, amqp-bindmap@lists.oasis-open.org
> Sent: Wednesday, 17 December, 2014 6:47:29 PM
> Subject: RE: JMS Destination handling
> 
> 
> 
> 
> 
> >> Fair enough on the wire, but since JMS supports only topics/queues for
> 
> >> addressing today, why not define such fixed prefixes for use by JMS
> 
> >> and all other topic/queue based MoMs and then avoid the complex
> >> broker/client
> 
> >> interaction of making these configurable/vendor-specific?   Ie. why would
> >> we
> 
> >> want them to be different?
> 
> >
> 
> 
> 
> >We might not want them to be different.
> 
> 
> 
> >The main issue is likely to be that they already do differ in existing
> >systems because the address string doesn't have a defined syntax, >and
> >changing them to a particular fixed value might not be feasible in all
> >cases.
> 
> 
> 
> right - and that can be a problem for systems developed before a spec is
> completed – and it is a hassle.
> 

The annoyance here are those systems which were developed against the core AMQP 1.0 spec, after it was completed. As I understand it, thought I may be wrong, the core spec deliberately left the address opaque in part so that existing systems could utilise addresses that suited/mapped to their existing non-AMQP behaviour, aiding adoption.

One of the goals for the JMS mapping was to interoperate to the extent possible with other 'non-JMS' AMQP 1.0 implementations. Requiring all AMQP 1.0 systems to use a particular [non-global] address naming convention seems a little harsh, particularly if it clashes with whatever they have in place now, over 3 years after the core spec came out (from the old Working Group).

> 
> 
> However, there are presumably going to be other incompatibilities in addition
> to this issue between any existing systems (where the incompatibilities are
> different for each existing system) and what the final mappings
> specification says and I would hate to set a precedence for needing a
> negotiation/dynamic mechanism of handling each of those that we find – and
> then maybe still not enough since we don’t know the ones we don’t know.
> 



At the moment, the main thing in this area would be potentially optional or JMS specific functionality, where a broker/peer doesnt implement everything needed to support a certain JMS feature, which is OK since we aren't looking to say all AMQP systems must. I think mechanisms already exist for conveying the types of thing we would want to here, i.e capabilities, properties etc. As mentioned, we could even use those to solve this problem a different way, just one which can break reply-to interop with all existing clients/brokers/others.

For the most part, given both sides are implementing AMQP 1.0, most further compatibility issues should be AMQP spec violations or lack of support for non-mandatory functionality. Those would seem more to either get fixed or be vendor specific 'we dont support X' notes rather than something I would be thinking the JMS mapping accommodating specifically.


> 
> 
> I don’t think we should let pre-standards work impose complexity that we will
> need to live with forever.  Ie. more configuration or negotiation, needing
> to do mappings both for published messages and subscriptions and then
> imposing these issues on administrators – it will not help encourage
> adoption.
> 

The idea was to require less configuration for things that are already doing this, not more. Things not requiring/doing this would continue not to require/do it.

> 
> 
> If existing systems/products did something different, I would prefer that
> they use the typical solution of them using system-specific ways to go from
> their own on pre-standard version to the standard – and do this as they see
> fit vs burdening the standard with (dynamic) mechanisms to adapt to
> pre-standard versions whose characteristics we likely don’t fully
> understand.
> 
> 
> 
> That’s why I’d prefer to just define a specific prefix for the identifier of
> a topic or queue to differentiate them from each other (and others in the
> Addressing spec) and leave it at that.
> 

As above I think it is difficult for us to define a specific node prefix/naming convention at this point. When the core spec came out, perhaps, or ideally the core spec could have handled node type directly. I think I would rather leave this out of the mapping as an implementation detail (like JMS destination names themselves are considered) than have it define a fixed convention.

> 
> 
> Shawn
> 
> 
> 
> -----Original Message-----
> From: amqp-bindmap@lists.oasis-open.org
> [mailto:amqp-bindmap@lists.oasis-open.org] On Behalf Of Robbie Gemmell
> Sent: December-17-14 10:03 AM
> To: amqp-bindmap@lists.oasis-open.org
> Subject: Re: [amqp-bindmap] RE: JMS Destination handling
> 
> 
> 
> 
> 
> 
> 
> ----- Original Message -----
> 
> > From: "Shawn McAllister" <Shawn.Mcallister@SolaceSystems.com>
> 
> > To: "Robert X Godfrey" <robert.godfrey@jpmorgan.com>, "Robbie Gemmell"
> 
> > <rgemmell@redhat.com>, amqp-bindmap@lists.oasis-open.org
> 
> > Sent: Wednesday, 17 December, 2014 1:45:38 PM
> 
> > Subject: [amqp-bindmap] RE: JMS Destination handling
> 
> >
> 
> > +1 on option 3 for sure.
> 
> >
> 
> >
> 
> >
> 
> > >> My comment on prefixes is mainly that the work on the "global"
> 
> > >> addressing would potentially impact on "valid" address names, and
> 
> > >> that a simple prefix such as "queue:" might prevent the use of such
> 
> > >> addresses in a global context.  As such I would probably favour a more
> > >> flexible (e.g.
> 
> > >> regex) mechanism for name "mangling".
> 
> >
> 
> >
> 
> >
> 
> > Fair enough on the wire, but since JMS supports only topics/queues for
> 
> > addressing today, why not define such fixed prefixes for use by JMS
> 
> > and all other topic/queue based MoMs and then avoid the complex
> > broker/client
> 
> > interaction of making these configurable/vendor-specific?   Ie. why would
> > we
> 
> > want them to be different?
> 
> >
> 
> 
> 
> We might not want them to be different.
> 
> 
> 
> The main issue is likely to be that they already do differ in existing
> systems because the address string doesn't have a defined syntax, and
> changing them to a particular fixed value might not be feasible in all
> cases.
> 
> 
> 
> >
> 
> >
> 
> > Allowing them to be different by implementation, imo, adds yet more
> 
> > complexity to the client/broker interaction and will only further
> 
> > complicate any kind of broker-to-broker addressing of topic/queues
> 
> > required for federation.
> 
> >
> 
> >
> 
> >
> 
> > Shawn
> 
> >
> 
> >
> 
> >
> 
> > -----Original Message-----
> 
> > From: amqp-bindmap@lists.oasis-open.org
> 
> > [mailto:amqp-bindmap@lists.oasis-open.org] On Behalf Of Godfrey,
> 
> > Robert X
> 
> > Sent: December-17-14 8:19 AM
> 
> > To: Robbie Gemmell; amqp-bindmap@lists.oasis-open.org
> 
> > Subject: [amqp-bindmap] RE: JMS Destination handling
> 
> >
> 
> >
> 
> >
> 
> > As per the TC call yesterday, I think option 3 is the only truly
> 
> > viable solution here.
> 
> >
> 
> >
> 
> >
> 
> > > There was also a suggestion that something beyond a simple prefix
> 
> > > may
> 
> >
> 
> > > be needed, I will let the person behind those thoughts expand
> 
> > > further
> 
> >
> 
> > > to stop this getting any longer for now.
> 
> >
> 
> >
> 
> >
> 
> > That'd be me, I guess :-)
> 
> >
> 
> >
> 
> >
> 
> > My comment on prefixes is mainly that the work on the "global"
> 
> > addressing would potentially impact on "valid" address names, and that
> 
> > a simple prefix such as "queue:" might prevent the use of such
> 
> > addresses in a global context.  As such I would probably favour a more
> 
> > flexible (e.g. regex) mechanism for name "mangling".
> 
> >
> 
> >
> 
> >
> 
> >
> 
> >
> 
> > A quick thought on Destination equivalence - I'm guessing that in JMS
> 
> > terms two Destinations are equal iff they are of the same type
> 
> > (Topic/Queue/etc - derived from meta-data) and use the same *mangled* AMQP
> > address?
> 
> >
> 
> >
> 
> >
> 
> > -- Rob
> 
> >
> 
> >
> 
> >
> 
> >
> 
> >
> 
> > Legally required information for business correspondence/Gesetzliche
> 
> > Pflichtangaben für Geschäftskorrespondenz:
> 
> >
> 
> > http://www.jpmorgan.com/pages/international/germany/email
> 
> >
> 
> >
> 
> >
> 
> > -----Original Message-----
> 
> >
> 
> > From:
> 
> > amqp-bindmap@lists.oasis-open.org<mailto:amqp-bindmap@lists.oasis-open
> 
> > .org> [mailto:amqp-bindmap@lists.oasis-open.org] On Behalf Of Robbie
> 
> > Gemmell
> 
> >
> 
> > Sent: 17 December 2014 12:32
> 
> >
> 
> > To:
> 
> > amqp-bindmap@lists.oasis-open.org<mailto:amqp-bindmap@lists.oasis-open
> 
> > .org>
> 
> >
> 
> > Subject: [amqp-bindmap] JMS Destination handling
> 
> >
> 
> >
> 
> >
> 
> > Hi everyone,
> 
> >
> 
> >
> 
> >
> 
> > I would like to have a discussion around JMS destination handling in
> 
> > the JMS Mapping for AMQP 1.0, in particular around how to handle JMS
> 
> > Destination names via the AMQP "address" field of a link
> 
> > (producer/consumer) source/target and the "to", and "reply-to" field of
> > messages.
> 
> >
> 
> >
> 
> >
> 
> > Apologies for the length of the mail, there is a fair bit to outline.
> 
> > I moved some information for full context to the end to help a tiny
> 
> > bit. I didn't use JIRA for this as mentioned on the call yesterday, as
> 
> > I noticed a problem with my account.
> 
> >
> 
> >
> 
> >
> 
> > JMS defines multiple Destination types that each have their own
> 
> > inherent name space, so it is possible for example to have a Queue and
> 
> > a Topic with the same name (e.g "foo"). AMQP defines an "address"
> 
> > field on the source/target of links (producers/consumers), and a "to"
> 
> > and "reply-to" field are available on messages, to indicate the
> 
> > destination node (e.g queue/topic) address. These are typically string
> 
> > values, and they form a single space since as there is no additional
> 
> > node type information only the address name itself.
> 
> >
> 
> >
> 
> >
> 
> > This is is mostly an issue for non-temporary Queues and Topics since
> 
> > TemporaryQueue and TemporaryTopic destinations will be given generated
> 
> > addresses by the 'broker' peer through use of dynamic nodes, and so
> 
> > can naturally be prevented from having the same addresses as each
> 
> > other, and be made unlikely or unable to clash with non-temporary nodes.
> 
> >
> 
> >
> 
> >
> 
> > To handle this mapping between JMS and AMQP it would seem we must either:
> 
> >
> 
> > 1. Not support JMS Queues and Topics with the same name existing at
> 
> > all, OR 2. Allow multiple nodes to have the same address string but
> 
> > use type metadata (via capabilities + annotations, see additional
> 
> > context) to discriminate between them, OR 3. Utilise address string
> 
> > naming conventions (e.g prefixes) for them to separate the types into
> > subspaces.
> 
> >
> 
> >
> 
> >
> 
> > The first option is an issue for implementations that already do, and
> 
> > wish to continue to, allow Queues and Topics with the same name via
> 
> > other protocols while also supporting AMQP, and would be a limitation
> 
> > in terms of full JMS support. The second option would break reply-to
> 
> > usage for any clients or intermediaries that don't understand the
> 
> > message annotations and/or
> 
> > source+target capabilities carrying type metadata (see additional context).
> 
> > The third option either requires clients to always utilise the full
> 
> > address strings in session.createQueue("<queue-prefix>foo") etc calls,
> 
> > or providing a means to configure the prefixes within the client so
> 
> > that they are added/removed behind the scenes and the application just
> 
> > uses session.createQueue("foo"), but the resulting AMQP address string
> 
> > would be "<queue-prefix>foo". The main issue with requiring clients
> 
> > always use the full address as the session.createQueue(..) value would
> 
> > be for bridging between different systems using different conventions,
> 
> > though the values for those methods are noted as being provider-specific.
> 
> >
> 
> >
> 
> >
> 
> > Both the old Qpid AMQP 1.0 JMS client, and the new JMS client we are
> 
> > creating that implements the JMS Mapping for AMQP being worked on,
> 
> > currently do some form of the third option, providing a way to
> 
> > configure a 'queue prefix' and 'topic prefix' that are used to prefix
> 
> > the application provided strings in
> 
> > session.createQueue(..) etc for outgoing addresses used for links and
> 
> > messages and be stripped from incoming addresses on messages to give
> 
> > the names used for the JMSDestination and JMSReplyTo objects.
> 
> > Temporary destinations are named by the 'broker' peer and their
> 
> > addresses are used as provided.
> 
> >
> 
> >
> 
> >
> 
> > The main issue with this approach is that such configuration makes it
> 
> > more difficult to use the client against a number of different
> 
> > brokers, which is a goal, since this configuration is likely to differ
> 
> > between them meaning even the simplest HelloWorld type example may be
> 
> > unable to work against them without additional configuration.
> 
> >
> 
> >
> 
> >
> 
> > An idea to handle this was to have the brokers use connection
> 
> > properties to inform the client of the prefixes (if any) they require
> 
> > it to use, allowing different brokers to supply their own specific
> 
> > value (if any) to meet their requirements, and allowing clients/simple
> 
> > applications to work against many of them without further configuration
> > change.
> 
> >
> 
> >
> 
> >
> 
> > An alternative suggestion was to have the JMS Mapping define a set of
> 
> > standard name prefixes the client would use by default, such that the
> 
> > issue of Topics and Queues with the same name is addressed by the
> 
> > mapping, while also allowing brokers to specify their own values via
> 
> > connection properties so that their specific needs can still be met if
> 
> > different (e.g they have existing naming conventions they wish/need to
> > retain).
> 
> >
> 
> >
> 
> >
> 
> > There was also a suggestion that something beyond a simple prefix may
> 
> > be needed, I will let the person behind those thoughts expand further
> 
> > to stop this getting any longer for now.
> 
> >
> 
> >
> 
> >
> 
> > Thoughts?
> 
> >
> 
> >
> 
> >
> 
> > Robbie
> 
> >
> 
> >
> 
> >
> 
> >
> 
> >
> 
> >
> 
> >
> 
> > Additional Context:
> 
> >
> 
> >
> 
> >
> 
> > We also need to transmit the destination type information during link
> 
> > (e.g
> 
> > producer/consumer) attachment and on sent messages to ensure we can
> 
> > support the required JMS behaviours (e.g. to indicate we are attaching
> 
> > to a particular type of node, say a queue, and for carrying
> 
> > JMSDestination and JMSReplyTo type on messages to indicate/discover where a
> > message was sent).
> 
> >
> 
> >
> 
> >
> 
> > For handling these points we are defining the following behaviour:
> 
> >
> 
> >
> 
> >
> 
> > # During link attachment for producers/consumers:
> 
> >
> 
> > - Node name carried in source/target "address" field string.
> 
> >
> 
> > - JMS Destination type represented by capabilities on the
> 
> > source/target (e.g "queue", "topic", "temporary-queue", "temporary-topic").
> 
> >
> 
> > - Clients can optionally assert on the attach response that the
> 
> > required capabilities exist in the source/target to ensure they have
> 
> > attached to a node that meets their requirements.
> 
> >
> 
> > - 'Broker' peers can use the capabilities to determine the type of
> 
> > node to create if it is a dynamic node being requested (or if they
> 
> > support auto-creation of non-temporary nodes).
> 
> >
> 
> >
> 
> >
> 
> > # When sending messages:
> 
> >
> 
> > - Node names carried in "to" and "reply-to" fields as appropriate.
> 
> >
> 
> > - JMS Destination type carried in "x-opt-jms-dest" and "x-opt-jms-reply-to"
> 
> > message annotations as a byte.
> 
> >
> 
> >
> 
> >
> 
> > ---------------------------------------------------------------------
> 
> >
> 
> > To unsubscribe from this mail list, you must leave the OASIS TC that
> 
> > generates this mail.  Follow this link to all your TCs in OASIS at:
> 
> >
> 
> > https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> 
> >
> 
> >
> 
> >
> 
> >
> 
> >
> 
> > This email is confidential and subject to important disclaimers and
> 
> > conditions including on offers for the purchase or sale of securities,
> 
> > accuracy and completeness of information, viruses, confidentiality,
> 
> > legal privilege, and legal entity disclaimers, available at
> 
> > http://www.jpmorgan.com/pages/disclosures/email.
> 
> >
> 
> 
> 
> ---------------------------------------------------------------------
> 
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail.  Follow this link to all your TCs in OASIS at:
> 
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> 
> 
> 


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]