对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Integration 6.3.1Spring中文文档

定义中的运算符是一个特殊的服务激活器实现,通过其输入通道调用其他端点或集成流并等待回复。 从技术上讲,它与定义中的嵌套组件扮演相同的角色(请参阅从链中调用链),并允许流更简洁、更直接。 从逻辑上讲,从业务角度来看,它是一个消息传递网关,允许在目标集成解决方案的不同部分之间分发和重用功能(请参阅消息传递网关)。 对于不同的目标,此运算符具有多个重载:gateway()IntegrationFlow<gateway><chain>Spring中文文档

  • gateway(String requestChannel)按其名称向某个端点的输入通道发送消息;Spring中文文档

  • gateway(MessageChannel requestChannel)通过直接注入将消息发送到某个端点的输入通道;Spring中文文档

  • gateway(IntegrationFlow flow)将消息发送到提供的输入通道。IntegrationFlowSpring中文文档

所有这些都有一个变体,其中包含第二个参数来配置目标和相应的 . 此外,基于 -的方法允许调用现有 bean 或通过功能接口的就地 lambda 将流声明为子流,或者以方法更简洁的代码样式提取它:Consumer<GatewayEndpointSpec>GatewayMessageHandlerAbstractEndpointIntegrationFlowIntegrationFlowIntegrationFlowprivateSpring中文文档

@Bean
IntegrationFlow someFlow() {
        return IntegrationFlow
                .from(...)
                .gateway(subFlow())
                .handle(...)
                .get();
}

private static IntegrationFlow subFlow() {
        return f -> f
                .scatterGather(s -> s.recipientFlow(...),
                        g -> g.outputProcessor(MessageGroup::getOne))
}
如果下游流并不总是返回应答,则应将 设置为 0 以防止无限期挂起调用线程。 在这种情况将在此时结束,线程将被释放以进行进一步的工作。requestTimeout
如果下游流并不总是返回应答,则应将 设置为 0 以防止无限期挂起调用线程。 在这种情况将在此时结束,线程将被释放以进行进一步的工作。requestTimeout