У нас есть приложение, использующее 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 мы можем увидеть следующее:
- В строке 709 MESSAGEID создается путем вызова метода getNextMessageId (продюсер)
- В строке 923 мы видим, что это messageId генерируется с использованием идентификатора производителей и последовательности сообщений.
Это никогда не может генерировать идентификатор сообщения, отформатированный как UUID. Я что-то упустил или просто невозможно установить messageId в UUID с помощью Apache QPID?
Спасибо за ваш ответ! Наша проблема заключается в том, что у нас есть спецификация сообщений, которую должны следовать все поставщики, и что спецификация указывает, что messageId должен быть в формате UUID. На этом этапе, я думаю, может быть трудно изменить спецификацию, которая ставит нас в сложную ситуацию. – P3anuts
Я уверен, что все разработчики JMS-клиентов не согласятся изменить свои реализации клиентов для соответствия вашим бизнес-спецификациям. –
Мне это известно, но я все равно открыл для этого проблему. Поскольку это работало в предыдущих версиях, я думаю, было бы неплохо, если бы он мог работать и сейчас. Будет интересно посмотреть, как обрабатывается эта проблема. https://issues.apache.org/jira/browse/QPIDJMS-105 – P3anuts