Spring Integration DSL: отправка вывода преобразования на несколько конечных точек

Унаследованный проект Spring Integration определяет рабочий процесс с помощью XML. Базовый поток выглядит следующим образом:

  1. int-jms:message-driven-channel-adapter ожидает сообщения и помещает его во внутренний канал.
  2. Трансформатор обрабатывает сообщение на канале, а затем вывод направляется на три других внутренних канала.
  3. Каждый из этих каналов привязан к конечной точке, которая будет обрабатывать выходные данные.

Ниже приведен 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 представлял полный рабочий процесс (если это возможно)?

Спасибо


person user1052610    schedule 25.02.2018    source источник


Ответы (1)


Вы можете использовать .routeToRecipients() по той же причине: https://docs.spring.io/spring-integration/docs/5.0.2.RELEASE/reference/html/java-dsl.html#java-dsl-маршрутизаторы

И затем создайте отдельные потоки для каждого получателя.

person Artem Bilan    schedule 25.02.2018