1

遗留 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();
}

每个端点都被表示为一个单独的IntegrationFlowbean。这是最佳实践,还是最好让一个IntegrationFlow代表完整的工作流程(如果可能的话)?

谢谢

4

1 回答 1

3

您可以.routeToRecipients()出于同样的原因使用:https ://docs.spring.io/spring-integration/docs/5.0.2.RELEASE/reference/html/java-dsl.html#java-dsl-routers

然后为每个收件人提供单独的流程。

于 2018-02-25T21:32:58.053 回答