Мне нужно сделать несколько HTTP-вызовов для внешних систем. У меня простой вопрос, я хочу отправить по почте xml-файл, который не является самой полезной нагрузкой, а просто ее частью. Я могу легко получить его с помощью #[payload.getMyXmlPostMessage()]
, но как поместить эту информацию в компонент http? Я не хочу перезаписывать полезную нагрузку, содержащую другую информацию, которая будет использоваться позже в потоке.
Mule - http сообщение
Ответы (2)
Вероятно, лучший способ вызвать внешнюю службу без изменения полезной нагрузки — делегировать ее отдельному потоку.
Вы можете вызвать его с помощью транспорта виртуальной машины, установив шаблон обмена для запроса ответа.
Таким образом, полезная нагрузка будет скопирована, вы сможете использовать новый поток для внесения всех изменений, которые могут вам понадобиться, а результат будет сохранен в переменной, которую вы настроили в <enricher />
Существуют различные варианты вызова внешней службы без изменения существующей полезной нагрузки: -
Сохраните существующую полезную нагрузку в переменной непосредственно перед вызовом Http, а затем установите полезную нагрузку из переменной, используя set payload сразу после вызова Http.
Используйте блок Async в потоке и вызовите внешний сервис, используя Http. Использование асинхронного блока создаст копию потока и не нарушит текущую полезную нагрузку, так как она получит ее копию.
- И, конечно же, есть компонент Enricher, и вы можете использовать свой компонент Http внутри Enricher и вызывать внешнюю службу. Как вы знаете, Enricher не будет мешать текущей полезной нагрузке.