我有一個場景,需要同步Web服務在調用異步服務(使用相關標識以稍後識別此事件)後創建響應。異步服務會將結果放入緩存中。而且我的Web服務需要設置一個活動的輪詢器/偵聽器來等待具有相同相關ID的事件插入到緩存中。一旦記錄可用,Web服務就可以創建一個響應對象並將其發送給客戶端。通過Mule中的守護進程線程維護多個HttpRequests
現在,異步過程可能需要很長時間,這會導致我的Web服務的主線程空閒。 Web服務正在發展成爲一個騾子工作流程,以及確切的情況如下圖所示:
|→ async service → update cache → end //Async thread Client--> myWebSvc | |→ setup cache listener → onEvent() → respond to Client //Main thread
是否有騾子的方式,可以幫助我保持地圖這樣一個HTTPRequests的,並保持它們在守護線程?這將有助於在等待舊的響應時接受新的請求。
我已經開始關注Java NIO,但我無法想象如何將它與Mule工作流程集成。在mule中有沒有解決方案可以幫助我釋放主線程並將HttpRequest對象存儲在地圖中以便稍後調用?
更多細節: Web服務是用java實現的。騾子的工作流程是這樣的:
|→ async subflow to invoke async process HTTP Request → CXF component → Java component| |→ (sub flow) Java component to listen to events