Пожалуйста, рассмотрите возможность использования..enrich()
EIP-метод:
<code>/**
* Populate a {@link org.springframework.integration.transformer.ContentEnricher}
* to the current integration flow position
* with provided options.
* Typically used with a Java 8 Lambda expression:
* <pre class="code">
* {@code
* .enrich(e -> e.requestChannel("enrichChannel")
* .requestPayload(Message::getPayload)
* .shouldClonePayload(false)
* .autoStartup(false)
* .<Map<String, String>>headerFunction("foo", m -> m.getPayload().get("name")))
* }
*
* @param enricherConfigurer {@link Consumer} для предоставления * {@link org.springframework.integration.transformer.ContentEnricher} параметров.* @ возврат текущего {@link IntegrationFlowDefinition}.* @see EnricherSpec * / public B enrich (Consumer enricherConfigurer) {
Таким образом, вы можете вызывать все, что вам нужно, на основании сообщений запроса и сохранять все в выходной полезной нагрузке.
Более подробную информацию о Enricher
см. В Справочном руководстве .
Также вы можете ознакомиться с sample .Я знаю, что один на XML-конфигурации, но принцип тот же.
ОБНОВЛЕНИЕ
Для этого трюка вам нужно обернуть ваш запрос File
в Collection
(List
, конечно) и все остальные файлы, которые вы 'просто добавьте в эту коллекцию простое выражение addAll()
.
Другое, гораздо лучшее решение было бы с .gateway()
.Итак, вы отправляете туда свой файл и просто возвращаете Collection
вместе с другими.Таким образом, ваш поток должен быть достаточно плавным, чтобы иметь дело только с одним файлом в восходящем и последующем сборах.