程序管理器企業整合模式
企業整合模式包括程序管理器模式。現在,您可以透過在路由單中使用封裝在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)));
}