我在这里和大家分享下在 Interoperability 的接口开发中,调用Web Service接口的几个超时参数的设置经验。
赶时间的同学可以直接拉到文章最下面看结论就好。
1.实验过程
首先我设计了一个Web service的服务器端,强制在接收到请求后 8s 返回结果。
在客户端我设置了响应超时7s, 重试间隔5s, 故障超时23s,如图:
在客户端、服务器端均设置了SOAP Log 记录接收和发送的内容
set^ISCSOAP("Log")="io"set^ISCSOAP("LogFile")="c:\temp\soapClient.txt"经过整理日志我画了下面的数据流图
2. 得出下面结论:
- *1:重试间隔虽然设置为5s,但是仅当有响应超时错误后才会被触发
- *2:虽然服务器端有返回值,但是已经超过了设定的响应超时(7s)时间,则返回值不会被客户端接收
- *3:故障超时虽然设置为23s,但是仅当有响应超时错误后才会被触发
3. 结论再验证
为了验证上面结论我修改了Web service的服务器端代码,强制在接收到请求后 23s 返回结果,
并且设置响应超时20s, 重试间隔6s, 故障超时25s,得出上面同样的结论:自动重发或者故障超时错误的触发条件都是收到响应超时错误。
所以我们要特别注意设置响应超时这个参数的值:


.png)
