2015-10-23 39 views
0

我已在網關下配置。這是從tomcat上部署的Web應用程序服務層作爲SI流的入口點。 invoke方法將從服務層調用。 SI流具有多個組件,它使用分離器,路由器和聚合器,最後將響應發送到outputChannel。Spring集成如何管理異步網關

在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

每個網關請求得到一個新的臨時信道(在replyChannel頭)。當您在網關上明確使用回覆通道時,它會橋接到請求的實際回覆通道。調用線程等待在該頻道上收到回覆。

一般而言,您可以省略回覆通道,並且在最終端點上沒有output-channel。該框架將檢測該消息,並將回覆直接發送到replyChannel標題,回到網關。

有時需要使用明確的回覆通道(例如,如果你想連線點擊它來記錄日誌);在這些情況下,框架做了我上面提到的橋接。

replyChannel標題未被流刪除至關重要;否則框架無法將答覆回覆給調用者。

+0

非常感謝澄清... –