2016-03-03 82 views
1

我有一個需要我的彈簧集成項目,當用戶進行一次安靜的調用時需要給出一個狀態,對於這個調用,服務器執行一些處理n計算應該被重新調回的狀態if狀態是成功,那麼我需要打電話給第三方服務,但這是透明的用戶(這第三方應該是異步)我怎麼能在春季整合彈簧集成異步流程

回答

2

我希望你使用<int-http:inbound-gateway>爲您的REST服務。

在這種情況下,您期待在TemporaryReplyChannel中的響應。

通常透明地回覆我們應該從頭部使用該通道。

所有Spring集成請求 - 回覆組件在它們未提供outputChannel時都會這樣做。這應該真的有機會感受到:我們沒有任何事情要做,所以把缺席outputChannel視爲流程的結束。如果是replyChannel的頭文件,我們會將結果發回給調用者。在你的情況下進入HTTP響應。

看起來像現在已經適合你。

爲了達到你的異步要求,我建議像PublishSubscribeChannel這樣的TaskExecutor這樣的東西能夠發送相同的消息給幾個訂閱者,並以並行方式完成。

對此事的XML配置可能看起來像:

<service-activator input-channel="lastProcessChannel" output-channel="3rdPartyChannel"/> 

<publish-subscribe-channel id="3rdPartyChannel" task-executor="taskExecutor"/> 

<bridge input-channel="3rdPartyChannel"/> 

<service-activator input-channel="3rdPartyChannel"/> 

獨立的那executor<int-http:inbound-gateway>將等待回覆,這樣就不會傷害我們的async<bridge>會產生結果到replyChannel來自不同的線程。

您的第三方服務應該從<service-activator>中調用,他是同一<publish-subscribe-channel>的第二個訂閱者。