如何将TcpOutboundGateway中的回复超时设置为无穷大

时间:2017-12-01 09:26:11

标签: spring-integration

包含MessageTimeoutException,连接已关闭。我不想关闭MessageTimeoutException的连接,因为我需要通过相同的出站通道发送重试消息。 为了保持此连接的活跃性,我想将超时设置为无穷大。我试过了clientFactory.setSoTimeout(-1),但它没有用。即使我也试过gateway.setRemoteTimeout(-1)

请帮忙,我怎样才能将超时设置为无穷大?

我设置了gateway.setRequestTimeout(10000),对于超时,我得到MessageTimeoutException,文本为

"Timed out waiting for response"错误,我应该在哪里"Timed out waiting for connection".请提出建议。

1 个答案:

答案 0 :(得分:0)

您可以将远程超时设置为Long.MAX_VALUE,这实际上是无穷大。这将永远等待(除非您在连接工厂上设置套接字超时)。我不建议那样做;选择更合理的超时。

  

因为我需要通过相同的出站频道发送重试消息

你做不到;我们必须关闭套接字,因为我们失去了任何关联响应的方法 - 我们可能会在发送第二条消息后得到第一条消息的响应。一旦我们超时,那个套接字必须被认为是“脏”的,所以我们关闭它。

网关严格用于请求/响应消息传递。如果要使用任意对等消息传递,则需要使用一对通道适配器。