我在网关下面配置了。这充当了来自部署在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;
}
答案 0 :(得分:1)
每个网关请求都会获得一个新的临时通道(在replyChannel
标头中)。当您在网关上明确使用回复通道时,它将桥接到请求的实际回复通道。调用线程等待在该频道上收到回复。
通常,您可以省略回复频道,并且在最终端点上没有output-channel
。框架将检测到并将回复直接路由到replyChannel
标头,然后返回到网关。
有时候使用显式回复通道是合乎需要的(例如,如果你想点击它来进行记录);在这些情况下,框架完成了我上面提到的桥接。
流程不会删除replyChannel
标头至关重要;否则框架无法将回复发送回调用者。