в верблюжьей java dsl завершается неудачно при маршалинге обмена, который ранее был не маршалированным (содержит вложения): содержимое MimeBodyPart отсутствует - PullRequest
0 голосов
/ 28 марта 2019

У меня есть обмен, содержащий Сообщение с вложениями.Я обнаружил, что не могу выполнить маршалинг сообщения, которое ранее было демаршалировано.

e.g.
.marshal().mimeMultipart()     // ok
.unmarshal().mimeMultipart()   // ok
.marshal().mimeMultipart()     // Fails with "No MimeBodyPart content"

сценарий использования: мне нужно отправить этот обмен через JMS Q другому компоненту.Поскольку JMS не понимает вложения, я должен позвонить .marshal().mimeMultipart() перед отправкой в ​​JMS Q. Получатель должен затем позвонить .unmarshal().mimeMultipart(), чтобы восстановить обмен / сообщение с вложениями.

Все это прекрасно работает - я могу получить доступ к вложениям и т. Д.

Однако, если во время обработки обмена происходит сбой, я хочу сохранить обмен в JMS FailedMessage queue,для повторной отправки вручную при необходимости.

Ошибка обнаружена функцией onException ().Я вызываю класс процесса для записи материала, изучения сообщения и просмотра вложений ... затем обратно в маршрут ...

Если я поместил обмен непосредственно в JMS Q, .to("jms:queue:MyService.FailedMsgQ")

Я теряю вложения (неудивительно).Если я сначала попробую упорядочить сообщение .marshal().mimeMultipart() перед помещением в очередь, произойдет сбой с сообщением «Нет содержимого MimeBodyPart»

Желаемый результат - поместить обмен в очередь с ошибками (как mimeMultipart), чтобы его можно былоПовторно отправлено.

Почему вы не можете (пере) выполнить обмен, который ранее был не маршалированным?

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