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: [OASIS Issue Tracker] (AMQPBINDMAP-15) update handling of correlation ID for interop

    [ https://issues.oasis-open.org/browse/AMQPBINDMAP-15?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62957#comment-62957 ] 

Robert Gemmell commented on AMQPBINDMAP-15:

Hi John,

In reading your reply a couple times I'm not quite sure if I am interpreting it correctly, or we aren't quite on the same page yet.

As shown in the examples if a message were sent from a non-JMS client to a JMS client, and a message-id or correlation-id value observed as JMSMessageID or JMSCorrelationID and then used to set the JMSCorrelationID value in a new message sent from the JMS client to the non-JMS client, the original AMQP client would receive a correlation-id value exactly matching what it had sent as message-id/correlation-id. In the case of string based IDs, that should happen regardless what the original string was.

It is true that the JMS application would see a different value than the one on the wire, if an AMQP message-id/correlation-id string beginning 'ID:AMQP_<FOO>:' is used, but that doesn't seem to be what you are concerned about above? The same would also be true of message-id strings received that don't begin "ID:". A more general recommendation might be that for maximum interop the message-id values should begin 'ID:' but not 'ID:AMQP_<FOO>:'

In terms of the format for the prefixing I personally think using the '_' is nicer than ':' given the latter is already used elsewhere, e.g "ID:AMQP_UUID:<foo>" reads nicer to me than "ID:AMQP:UUID:<foo>" for example, however either way I'd probably just stick with the existing ones because they've been defined and used that way for a couple years already.

(As an aside, brokers can't generate a message-id unless they are the entity originally generating the AMQP message, e.g during protocol conversion, since message-id is [in] an immutable part of the AMQP message)

> update handling of correlation ID for interop
> ---------------------------------------------
>                 Key: AMQPBINDMAP-15
>                 URL: https://issues.oasis-open.org/browse/AMQPBINDMAP-15
>             Project: OASIS Advanced Message Queuing Protocol (AMQP) Bindings and Mappings (AMQP-BINDMAP) TC
>          Issue Type: Bug
>          Components: JMS Mapping
>    Affects Versions: wd06
>            Reporter: Steve Huston
>            Assignee: Robert Gemmell
>            Priority: Blocker
> An issue with interop between JMS and non-JMS clients when using correlation ID values on messages.
> If a JMS application sets JMSCorrelationID on a Message, it can do so either using a JMSMessageID value (a String beginning with "ID:") or an application-specific string value. Previously we decided that the "ID:" prefix of a JMSMessageID should not be sent on the wire so other non-JMS client need not deal with it, and a message-id from a non-JMS client would round-trip correctly as a correlation-id value. For this reason, and also to accomodate the 4 different types of message-id that the core spec defines (string, ulong, uuid, and binary) and ensure preservation of the AMQP wire type when round-tripping these values into the JMS application layer and back to the AMQP layer, the client manages/translates the message-id and correlation-id values, and utilises the x-opt-app-correlation-id message annotation to record when an application-specific JMSCorrelationID value is in use.
> An issue arises if an application-specific string is sent as the JMSCorrelationID value on a request message (from JMS app A), and received by a a non-JMS app B which then sends a new reply message containing the same correlation-id value. If the non-JMS client/app B does not set the x-opt-app-correlation-id on its reply message, then the JMS app A receiving the reply message will then treat the correlation-id value as being representative of a JMSMessageID value and return incorrectly return an "ID:" prefixed value for the message JMSCorrelationID. This would then no longer match the JMSCorrelationID sent on the original request message.
> Related sections:
> JMSMessageID And JMSCorrelationID Handling
> 3.2.1 JMS Headers (specifically the JMSMessageID and JMSCorrelationID entries)
> 3.3.2 Properties Section ( specifically the message-id and correlation-id entries)
> Section references from WD6: https://www.oasis-open.org/committees/document.php?document_id=56418&wg_abbrev=amqp-bindmap

This message was sent by Atlassian JIRA

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