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: [amqp-bindmap] RE: JMS Destination handling


In case my expansions below dont make it clear enough, I also think option 3 is the way to go.

I was thinking of you with that comment :)

Yes, certain prefixes, some of which may already be in use as they do form 'valid' addresses, might not play well in a future global addressing context, certainly something to consider.

Any more concrete thoughts/examples on a regex 'mangling' mechanism?

In terms of Destination equivalence, if the name mangling is conducted on the way out of the client to form an AMQP address from the initial 'JMS name', and reversed on the way in to the client to give the 'JMS name' used for getJMSDestination/getJMSReplyTo, then I guess two Destination objects would be considered equal if they had the same type and same 'JMS Name'.

Robbie

----- Original Message -----
> From: "Robert X Godfrey" <robert.godfrey@jpmorgan.com>
> To: "Robbie Gemmell" <rgemmell@redhat.com>, amqp-bindmap@lists.oasis-open.org
> Sent: Wednesday, 17 December, 2014 1:18:33 PM
> 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] On Behalf Of Robbie Gemmell
> Sent: 17 December 2014 12:32
> To: 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.
> 


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