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)));
}