120 秒后 BPEL 超时 - Apache ODE - Tomcat
BPEL timeout after 120 seconds - Apache ODE - Tomcat
我是 bpel 的新手。我用 pick activity 创建了一个网络服务,它工作正常。但是当我将 onAlarm 持续时间更改为超过 120 秒时,我收到超时错误!是否可以更改 apache ode 的超时持续时间?我可以更改最大超时的任何 XML 文件?
BPEL 流程:
ReceiveInput -> 调用异步进程 -> pick activity with two paths (onMessage and onAlarm) -> onMessage 等待异步进程的回调(这个进程等待activity 5min) -> 一个之后这些机会被触发时,我只是将一个字符串("onMessage" 或 "onAlarm")分配给输出变量并将其回复给客户端。
我通过将 .endpoint 文件添加到 /ode/WEB-INF/conf 解决了这个问题。只需将此行添加到文件中:
# 10 minutes
mex.timeout=600000
有关更多信息,请查看:http://ode.apache.org/endpoint-configuration.html
这听起来像是您正在使用 two-way/synchronous 操作调用进程。这是一个反模式,因为如果在 receive/pick 和回复之间有一个很长的 运行 过程,那么这些超时是可以预料的。增加超时只会延迟问题。在这种情况下,一般建议是切换到具有两个单向消息的异步通信模型,即在回调操作上使用 <invoke>
来响应,而不是 <reply>
。 BPEL 的合作伙伴链接有助于将两个接口联系在一起。
我是 bpel 的新手。我用 pick activity 创建了一个网络服务,它工作正常。但是当我将 onAlarm 持续时间更改为超过 120 秒时,我收到超时错误!是否可以更改 apache ode 的超时持续时间?我可以更改最大超时的任何 XML 文件?
BPEL 流程: ReceiveInput -> 调用异步进程 -> pick activity with two paths (onMessage and onAlarm) -> onMessage 等待异步进程的回调(这个进程等待activity 5min) -> 一个之后这些机会被触发时,我只是将一个字符串("onMessage" 或 "onAlarm")分配给输出变量并将其回复给客户端。
我通过将 .endpoint 文件添加到 /ode/WEB-INF/conf 解决了这个问题。只需将此行添加到文件中:
# 10 minutes
mex.timeout=600000
有关更多信息,请查看:http://ode.apache.org/endpoint-configuration.html
这听起来像是您正在使用 two-way/synchronous 操作调用进程。这是一个反模式,因为如果在 receive/pick 和回复之间有一个很长的 运行 过程,那么这些超时是可以预料的。增加超时只会延迟问题。在这种情况下,一般建议是切换到具有两个单向消息的异步通信模型,即在回调操作上使用 <invoke>
来响应,而不是 <reply>
。 BPEL 的合作伙伴链接有助于将两个接口联系在一起。