我假设DefaultAsyncJobExecutor是默认情况下作为AsyncExecutor接口 的实现被拾取的类(不确定这个假设是否正确)
所以基本上我想修改一个异步作业的默认超时时长,默认超时时长是5分钟,也就是两个变量的值:
AbstractAsyncExecutor .java中的timerLockTimeInMillis、asyncJobLockTimeInMillis **
我尝试使用各自的 setter 方法更改这两个值,并尝试直接修改自定义实现的构造函数中的值,如下所示:
public class AsyncExecutorConfigImpl extends DefaultAsyncJobExecutor
{
// @Value( "${async.timeout.duration}" )
private int customAsyncJobLockTimeInMillis = 10 * 60 * 1000;
AsyncExecutorConfigImpl()
{
super();
setTimerLockTimeInMillis( this.customAsyncJobLockTimeInMillis );
setAsyncJobLockTimeInMillis( this.customAsyncJobLockTimeInMillis );
super.timerLockTimeInMillis = this.customAsyncJobLockTimeInMillis;
super.asyncJobLockTimeInMillis = this.customAsyncJobLockTimeInMillis;
}
}
但是这些值保持不变,因为超时仍然会在 5 分钟后发生。
初始化是通过 API 完成的,例如 start-new-process-instance,在这个 API 中,以下代码用于启动流程实例
-> 像这样异步启动工作流流程实例(processInstanceName,processInstanceId)
ProcessInstance lProcessInstance = mRuntimeService.createProcessInstanceBuilder()
.processDefinitionId( lProcessDefinition.get().getId() )
.variables( processInstanceRequest.getVariables() )
.name( lProcessInstanceName )
.predefineProcessInstanceId( lProcessInstanceId )
.startAsync();
->完成后,工作流程的其余部分涉及服务任务,当一个实例正在执行时,我猜会发生超时并且实例会重新启动
-> 因为,我配置了一个监听器,所以我能够在日志中看到启动事件活动每 5 分钟启动一次
例如:event-1 是第一个事件,然后此事件在 5 分钟后重新启动(持续时间显示在控制台日志中)
不确定,此时我缺少什么,如果需要任何其他详细信息,请告诉我