Унаследованный проект Spring Integration определяет рабочий процесс с помощью XML. Базовый поток выглядит следующим образом:
int-jms:message-driven-channel-adapter
ожидает сообщения и помещает его во внутренний канал.- Трансформатор обрабатывает сообщение на канале, а затем вывод направляется на три других внутренних канала.
- Каждый из этих каналов привязан к конечной точке, которая будет обрабатывать выходные данные.
Ниже приведен XML-код, который связывает компонент трансформатора с внутренними входными и выходными каналами:
<int:chain input-channel="inputChannel">
<int:transformer ref="..." />
<int:recipient-list-router apply-sequence="true">
<int:recipient channel="outputChannel1" />
<int:recipient channel="outputChannel2" />
<int:recipient channel="outputChannel3" />
</int:recipient-list-router>
</int:chain>
Сейчас пытаюсь представить это как DSL. Ниже представлена базовая конфигурация конечной точки:
@Bean
public DirectChannel outputChannel() {
return new DirectChannel();
}
@Bean
public org.springframework.integration.dsl.IntegrationFlow listenerFlow() {
return IntegrationFlows
.from(inputChannel)
.transform(transformer)
.channel(outputChannel())
.get();
}
@Bean
public org.springframework.integration.dsl.IntegrationFlow outputFlow() {
return IntegrationFlows
.from(outputChannel())
.handle(handler)
.get();
}
Каждая конечная точка представлена как отдельный IntegrationFlow
bean. Это лучшая практика или было бы предпочтительнее, чтобы один IntegrationFlow
представлял полный рабочий процесс (если это возможно)?
Спасибо