2016-06-28 144 views
2

我正在使用WSO2 ESB 4.9.0进行使用阻止呼叫的后端服务调用。由于jms事务,我必须使用阻塞调用。有时,ESB和后端服务之间的网络速度很慢,所以我想在连接上使用超时,但阻止端点上的呼叫超时不起作用。非阻塞呼叫超时工作正常。WSO2 ESB阻止呼叫超时

是否有可能使用阻塞呼叫超时?

感谢您的任何提示。

回答

1

由于端点超时不阻塞调用你可以尝试以下两种方法工作:

1)synapse.properties定义的全局超时(ESB_HOME \库\ CONF)文件。 这将决定回调在ESB中等待特定请求的响应的最长时间。

如果ESB没有从后端得到任何响应,它将丢弃消息并清除回调。这是影响ESB中配置的所有端点的全局级别参数。在passthru-http.properties(ESB_HOME \库\ CONF)文件中定义

synapse.global_timeout_interval=120000 

2)套接字超时。

该参数将决定特定http请求等待响应的超时时间。如果ESB在这段时间内没有收到来自后端的任何响应,则HTTP连接会超时,并且最终会在ESB端引发超时错误,并且将处理错误处理程序。

http.socket.timeout=60000 
+0

'synapse.global_timeout_interval'不能与阻塞呼叫一起工作。 'http.socket.timeout'的作品,但很奇怪。如果网络连接速度较慢,发送请求的时间比'http.socket.timeout'花费的时间要长,服务器接收请求后就会立即抛出'java.net.SocketTimeoutException'。因此,如果100KB请求以1KB/s的速度发送,那么即使http.socket.timeout值较低,也需要100秒,100秒后抛出SocketTimeoutException。 – tyfyh