产品及版本:Primeton ESB v6.6
问题描述: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秒处理请求报文并发送返回报文,会发生什