问题描述:Governor中针对每个操作设置“访问超时时间”与Endpoint中设置的超时时间有什么区别?
说明:针对每个操作设置“访问超时时间”是配置拦截器使用的,拦截器不打开设置无效。该拦截器功能是在服务调用时间超过“访问超时时间”时在返回报文的SoapHeader中增加提示信息。
Endpoint中设置的超时时间是ESB引擎实际控制等待服务提供者响应消息的时间。如果服务提供者响应消息的实际大于Endpoint设置的超时时间,server端会报异常提示no response after 30000;
使用以下几个例子说明:
例子一:A服务使用的Endpoint的超时时间设置为30秒,A服务的访问超时时间为20秒,ESB Server 内部检查服务提供者花费了35秒,A服务又花费了25秒处理请求报文并发送返回报文,会发生什么情况?
答:交易正常完成;有返回报文;返回报文有超时提醒。
(25s < 30s,即:A服务在Endpoint超时时间30s之内能响应)
(35s + 25s = 60s > 20s,即:一次穿透加A服务响应的时间 60s大于A服务的访问超时时间 20s,所以返回报文在 header 中有超时提醒信息)
例子二:A服务使用的Endpoint的超时时间设置为30秒,A服务的访问超时时间为20秒,ESB Server 内部检查服务提供者花费了25秒,A服务又花费了15秒处理请求报文并发送返回报文,会发生什么情况?
答:交易正常完成;有返回报文;返回报文有超时提醒。(如上,同理)
例子三:A服务使用的Endpoint的超时时间设置为30秒,A服务的访问超时时间为20秒,ESB Server 内部检查服务提供者花费了35秒,A服务又花费了15秒处理请求报文并发送返回报文,会发生什么情况?
答:交易正常完成;有返回报文;返回报文有超时提醒。(如上,同理)
例子四:A服务使用的Endpoint的超时时间设置为30秒,A服务的访问超时时间为20秒,ESB Server 内部检查服务提供者花费了25秒,A服务又花费了25秒处理请求报文并发送返回报文,会发生什么情况?
答:交易正常完成;有返回报文;返回报文有超时提醒。(如上,同理)
例子五:A服务使用的Endpoint的超时时间设置为20秒,A服务的访问超时时间为30秒,ESB Server 内部检查服务提供者花费了25秒,A服务又花费了35秒处理请求报文并发送返回报文,会发生什么情况?
答:交易不能完成(Server端会报异常提示no response after 20000);返回Server异常;返回报文没有超时提醒。
(35s > 20s,即:A服务还没返回响应但Endpoint已经超时了)
例子六:A服务使用的Endpoint的超时时间设置为20秒,A服务的访问超时时间为30秒,ESB Server 内部检查服务提供者花费了15秒,A服务又花费了25秒处理请求报文并发送返回报文,会发生什么情况?
答:交易不能完成(Server端会报异常提示no response after 20000);返回Server异常;返回报文没有超时提醒。(如例子五,同理)
例子七:A服务使用的Endpoint的超时时间设置为20秒,A服务的访问超时时间为30秒,ESB Server 内部检查服务提供者花费了25秒,A服务又花费了25秒处理请求报文并发送返回报文,会发生什么情况?
答:交易不能完成(Server端会报异常提示no response after 20000);返回Server异常;返回报文没有超时提醒。(如例子五,同理)
例子八:A服务使用的Endpoint的超时时间设置为20秒,A服务的访问超时时间为30秒,ESB Server 内部检查服务提供者花费了15秒,A服务又花费了35秒处理请求报文并发送返回报文,会发生什么情况?
答:交易不能完成(Server端会报异常提示no response after 20000);返回Server异常;返回报文没有超时提醒。(如例子五,同理)