2015-09-02 2 views
0

У нас есть приложение, использующее Apache Camel 2.15.2 и Apache Qpid 0.4.0, которые отправляют и получают сообщения через Amqp на служебную шину Microsoft 1.1.Apache Camel + QPid set messageid для UUID не работает

Недавно мы обновили Qpid от более раннего Qpid 0.32, и теперь у нас есть проблема, что мы не можем установить messageId сообщения AMQP на UUID, который является требованием приемника. Установленный messageId является строкой, созданной в классе JmsSession в Qpid. Например, это выглядит следующим образом: "CLIENT115-61957-114498109876-0: 15: 1-1"

В этом файле: https://github.com/apache/qpid-jms/blob/master/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsSession.java мы можем увидеть следующее:

  1. В строке 709 MESSAGEID создается путем вызова метода getNextMessageId (продюсер)
  2. В строке 923 мы видим, что это messageId генерируется с использованием идентификатора производителей и последовательности сообщений.

Это никогда не может генерировать идентификатор сообщения, отформатированный как UUID. Я что-то упустил или просто невозможно установить messageId в UUID с помощью Apache QPID?

ответ

1

Клиент не может и не может установить UUID как MessageID, и вы никогда не должны зависеть от значения JMSMessageID, являющегося конкретным форматом, поскольку это значение конкретного поставщика, которое может и будет отличаться от разных клиентских библиотек JMS.

Если ваши приложения зависят от сообщений, имеющих назначенный им идентификатор, которые могут быть скоррелированы вашим приложением-получателем, для этого вам следует использовать свойства сообщения, так как для этого они предназначены.

+0

Спасибо за ваш ответ! Наша проблема заключается в том, что у нас есть спецификация сообщений, которую должны следовать все поставщики, и что спецификация указывает, что messageId должен быть в формате UUID. На этом этапе, я думаю, может быть трудно изменить спецификацию, которая ставит нас в сложную ситуацию. – P3anuts

+0

Я уверен, что все разработчики JMS-клиентов не согласятся изменить свои реализации клиентов для соответствия вашим бизнес-спецификациям. –

+0

Мне это известно, но я все равно открыл для этого проблему. Поскольку это работало в предыдущих версиях, я думаю, было бы неплохо, если бы он мог работать и сейчас. Будет интересно посмотреть, как обрабатывается эта проблема. https://issues.apache.org/jira/browse/QPIDJMS-105 – P3anuts

Смежные вопросы