這是一個後續行動這樣一個問題:回覆消息接收,但接收線程已退出由於超時
Spring Integration Aggregator failing - "No reply received within timeout" message being displayed
在繼續測試在WebSphere 8.5我的POC,問題重新浮出水面,其中本從天而降錯誤:
GenericMessagW¯¯org.springframework.messaging.core.GenericMessagingTemplate $ TemporaryReplyChanne升發送回覆消息中接收但接收線程已經退出由於超時:的ErrorMessage [有效載荷= org.springframework。 messaging.MessageHandlingExcept離子:在消息處理程序發生錯誤[productAggregator.generateAggregatedResponse.aggregator.han dler];嵌套異常是java.lang.NullPointerException,headers = {id = d0b52beb-e9bd-0ba2-6062-6ee83b847c4a,timestamp = 1504755248824}]。
我看到這種情況的發生,一旦聚合開始,但有什麼不清楚的是嵌套異常「顯示java.lang.NullPointerException」,什麼這裏空值是導致超時。另一個問題是,如果聚合器在其輸入通道上有一個「等待」的默認超時值,之後它會停止等待,從而導致超時。
任何指針將不勝感激,而我繼續調試。
真誠, 巴拉斯
你必須顯示你的'productAggregator.generateAggregatedResponse.aggregator.han dler'。看起來這是NPE發生的地方。根本沒有任何與Aggregator組件相關的東西。聚合器上游只有一個網關,並且由於NPE導致我們發生'timeout'錯誤,因此您的自定義代碼沒有正常答覆。 –
謝謝加里,阿爾喬姆 - 我找到並修復了NPE。現在,聚合器正在將聚合消息發送到其outputChannel(X)。有一個自定義轉換器可以獲取這個消息,將其轉換並放到它的outputChannel(Y)上,這也是完美的。最後一步是從(Y)中讀取http網關,此時還有另一個「發送應答消息,但接收線程已由於超時而退出」消息。請注意,(Y)上的消息具有合適的有效負載/頭文件,且不包含任何NULL - HTTP網關是否有默認超時w.r.t回覆通道? – bmylavar
入站網關的默認超時值爲1000毫秒;你可以使用'reply-timeout'屬性來增加它。當HTTP線程返回到網關時,超時開始;對於具有異步子流程的流程,通常建議將超時時間增加到比您期望流程所用時間更長的時間。 –