对于最新的稳定版本,请使用 Spring Integration 6.3.4spring-doc.cn

对于最新的稳定版本,请使用 Spring Integration 6.3.4spring-doc.cn

企业集成模式包括 Process Manager 模式。 您现在可以通过使用封装在 routing slip 中的自定义 process manager logic 来轻松实现此模式。 除了 bean 名称之外,还可以返回任何对象,并且不要求此实例是应用程序上下文中的 bean。 这样,当无法预测应该使用哪个 channel 时,我们可以提供强大的 dynamic routing logic。 可以在 中创建 A 并返回 。 对于此类情况,A 与关联的 implementation 是一个很好的组合。 例如,你可以路由到 Reactive Streams,如下例所示:RoutingSlipRouteStrategyRoutingSlipRouteStrategyMessageChannelMessageChannelMessageChannelRoutingSlipRouteStrategyFixedSubscriberChannelMessageHandlerspring-doc.cn

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