JMSCorrelationID с префиксом ID: - PullRequest
2 голосов
/ 05 марта 2012

У меня есть код, который делает это:

String transactionId = incoming.getJMSCorrelationID();

когда я использовал ActiveMQ для тестирования, я мог без проблем отправлять сообщения и получать это значение. Тем не менее, когда я подключен к Websphere, значение приходит через префикс «ID:». Я понятия не имею, почему это так - специалисты по промежуточному программному обеспечению говорят мне, что мой код должен его добавлять, а это не так.

Это простой случай для меня, чтобы удалить его, но я хочу знать, почему появляется этот префикс - есть идеи, кто-нибудь?

1 Ответ

5 голосов
/ 05 марта 2012

Я считаю, что люди из промежуточного ПО ошибаются:

JMSMessageID из MQMD MessageID

Все сообщения, отправленные из JMS, имеют уникальные идентификаторы сообщений, назначенные WebSphere MQ. Назначенное значение возвращается в поле messageId MQMD после вызова MQPUT и возвращается приложению в поле JMSMessageID. Идентификатор сообщения WebSphere MQ представляет собой 24-байтовое двоичное значение, а JMSMessageID - строку. JMSMessageID состоит из двоичного значения messageId, преобразованного в последовательность из 48 шестнадцатеричных символов, с префиксом идентификатора символа: . JMS предоставляет подсказку, которую можно установить, чтобы отключить создание идентификаторов сообщений. Эта подсказка игнорируется, и во всех случаях присваивается уникальный идентификатор. Любое значение, которое установлено в поле JMSMessageId перед перезаписью send ().

From: Отображение полей заголовка JMS при send () или publish () .

Также я помню, что заметил этот префикс при работе с мостом JMS-WebsphereMQ. Но на самом деле - почему тебя это волнует? Это String идентификатор, спецификация ничего не говорит о его структуре, за исключением того, что он должен быть уникальным.

ОБНОВЛЕНИЕ: На самом деле, как указано @ skaffman , префикс ID: требуется согласно спецификации JMS :

3.4.3. JMSMessageID

Все значения JMSMessageID должны начинаться с префикса ‘ID:’. Уникальность Значения идентификатора сообщения для разных поставщиков не требуются.

Это означает, что мост WebsphereMQ добавляет префикс ID: только для соответствия спецификации JMS. И, как отметил @ skaffman , ActiveMQ не совместим с ним ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...