2015-11-20 151 views
0

我們使用http入站網關來處理http請求。最近,我們希望設置特定的http響應代碼,在超時後發送給用戶。 我們升級到spring 4.2.1,並設置Http入站網關需要2x超時向客戶端發送超時響應

回覆超時狀態代碼表達屬性

,它的工作現在。

但是有一個問題:如果我們將超時設置爲10秒,那麼在完成10秒後Web應用程序中會產生一個ReplyTimeoutException,但響應20秒後到達客戶端(正好是雙精度)。

我們多次更改了超時時間,但客戶端收到的響應總是需要2x超時。

這是HTTP入站網關XML配置:

<int-http:inbound-gateway id="inboundRequest" request-channel="inbound-channel" 
     supported-methods="POST" path="/Request" error-channel="errorChannel" reply-channel="gateway_response" 
     reply-timeout="5000" request-payload-type="java.lang.String" reply-timeout-status-code-expression="'504'" > 

幫助將非常感激

回答

1

我看到你有一個error-channel - 如果錯誤流沒有返回響應,應答計時器當錯誤流程結束時我們再次啓動(我們正在等待來自錯誤流程的回覆)。

不需要從錯誤流中不返回任何東西,您需要拋出MessageTimeoutException

打開DEBUG日誌記錄並跟蹤消息流是診斷類似問題的最佳方法。

如果這不是問題,則需要顯示其餘配置(編輯問題,不要嘗試將其發佈到評論中)。

+0

我刪除了錯誤通道,因爲我不需要處理任何特定的異常,現在它工作正常。謝謝。不知道我是否明白了爲什麼應答計時器會再次啓動,請您多給我解釋一下,或者發送給我一個文檔鏈接。非常感謝。 – Razink