2016-05-16 20 views
0

Spring Integration的網關元素具有「default-reply-timeout」屬性,但無法根據消息本身的數據設置超時值。我可以爲每個可能的超時值創建一個網關,然後在運行時爲該消息選擇一個適當的網關,但這顯然是一個令人討厭的解決方法。Spring Integration Gateway中的超時表達式

版本4.2向TCPOutboundGateway添加了「remote-timeout-expression」屬性,但該更改沒有將其添加到GatewayProxyFactoryBean。

這就是說,有沒有一種方法可以根據消息的具體情況配置超時?如果沒有,是否計劃在某個時刻將「remote-timeout-expression」屬性移植到GatewayProxyFactoryBean?

感謝您的幫助!

回答

0

它目前是一個固定值,不能逐個消息配置。

我們當然可以考慮這樣做,但它可能不會成爲4.3,因爲the release candidate is already out

一種可能的解決方法是使用MessagingTemplate而不是網關。您可以設置的MessagingTemplate,每個具有不同的超時配置的集合,而不是網關:

Foo result = this.templateWith10SecondTimeout.convertSendAndReceive(bar, Foo.class); 

或者,你可以不同的方法添加到您的網關,每一個不同的答覆超時。

public interface GW { 

    Foo waitTenSeconds(Bar bar); 

    Foo waitTwentySeconds(Bar, bar); 

} 

默認的超時時間是默認值,可以在每個方法上設置超時時間。

+0

感謝您的快速響應,這些解決方法暫時看起來像是一個體面的解決方案。至於獲取GatewayProxyFactoryBean中包含的remote-timeout-expression,是否有我可以爲此做出的功能要求? – alowrey

+0

如果您想追蹤它,我已經打開了一個[JIRA問題](https://jira.spring.io/browse/INT-4033)。 –

相關問題