企业集成模式中的进程管理器
企业集成模式包括 流程管理器 模式。现在,您可以很容易地通过在路由单中使用封装自定义流程管理器逻辑的 RoutingSlipRouteStrategy 来实现此模式。除了 bean 名称之外,RoutingSlipRouteStrategy 可以返回任何 MessageChannel 对象,并且不要求这个 MessageChannel 实例是应用程序上下文中的 bean。这样,当无法预测应该使用哪个通道时,我们可以提供强大的动态路由逻辑。可以在 RoutingSlipRouteStrategy 内创建一个 MessageChannel 并返回它。带有相关 MessageHandler 实现的 FixedSubscriberChannel 是这种情况下的一种很好的组合。例如,您可以路由到 Reactive Streams,如下例所示:
@Bean
public PollableChannel resultsChannel() {
    return new QueueChannel();
}
@Bean
public RoutingSlipRouteStrategy routeStrategy() {
    return (requestMessage, reply) -> requestMessage.getPayload() instanceof String
            ? new FixedSubscriberChannel(m ->
            Mono.just((String) m.getPayload())
                    .map(String::toUpperCase)
                    .subscribe(v -> messagingTemplate().convertAndSend(resultsChannel(), v)))
            : new FixedSubscriberChannel(m ->
            Mono.just((Integer) m.getPayload())
                    .map(v -> v * 2)
                    .subscribe(v -> messagingTemplate().convertAndSend(resultsChannel(), v)));
}