Apache Camel: как сохранить оригинальные вложения после разделения? - PullRequest
0 голосов
/ 13 февраля 2019

Я использую EIP Split *1002*, пытаясь либо получить доступ ко всем вложениям из оригинала в сообщении, либо скопировать все вложения из оригинала в сообщении во входящее сообщение суб-обмена.

Я обнаружил, что это работает, но мне это кажется странным:

…
// Save attachments in some header:
.setHeader("savedAttachments", new Expression() {
    @Override
    public <T> T evaluate(final Exchange exchange, final Class<T> aClass) {
        return (T) exchange.getIn().getAttachments();
    }
})
.split(…)
// Restore attachments:
.process(exchange -> exchange.getIn().setAttachments((Map<String, DataHandler>) it.getIn().getHeader("savedAttachments")))
…

Это как это сделать?Или есть лучший способ?

Я также пробовал несколько комбинаций context.setAllowUseOriginalMessage(true); и .split(…).shareUnitOfWork() и exchange.getUnitOfWork().getOriginalInMessage().getAttachments(), но я не мог получить доступ к исходным вложениям таким образом.

Спасибо

Джон

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