Spring集成如何管理Async Gateway

时间:2015-10-23 04:20:38

标签: spring-integration

我在网关下面配置了。这充当了来自部署在tomcat上的Web应用程序服务层的SI流的入口点。将从服务层调用invoke方法。 SI流有许多组件,它使用分离器,路由器和聚合器,最后响应被发送到outputChannel。

在SI流程中,我使用多个任务执行器来使某些流并行运行(特别是在拆分器之后)。

SI如何确保将正确的响应返回给服务层的呼叫?是否有可能将一个用户请求的响应发送到其他请求?如果是,是否需要任何特殊处理?如果需要,我可以粘贴完整的配置。

<!-- Entry point Facade to DSL layer. To be called by Liquidity Portal web application -->
<int:gateway id="dslServiceFacade" service-interface="dsl.gateway.IDSLServiceFacade"  
    default-request-channel="inputChannel" default-reply-channel="outputChannel" error-channel="errorChannel" async-executor="dslParallelExecutor">
    <int:method name="invoke" request-channel="inputChannel" request-timeout="5000"/>
</int:gateway>

public interface IDSLServiceFacade {

public Future<DSLResponseVO> invoke(Map<String, Object> requestMap) throws LSIntegrationException;
}

1 个答案:

答案 0 :(得分:1)

每个网关请求都会获得一个新的临时通道(在replyChannel标头中)。当您在网关上明确使用回复通道时,它将桥接到请求的实际回复通道。调用线程等待在该频道上收到回复。

通常,您可以省略回复频道,并且在最终端点上没有output-channel。框架将检测到并将回复直接路由到replyChannel标头,然后返回到网关。

有时候使用显式回复通道是合乎需要的(例如,如果你想点击它来进行记录);在这些情况下,框架完成了我上面提到的桥接。

流程不会删除replyChannel标头至关重要;否则框架无法将回复发送回调用者。