Process Manager Enterprise Integration Pattern
企业集成模式包括 process manager 模式。现在,您可以通过在路由单中封装在 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)));
}