FLOWABLE: как изменить 5-минутный интервал по умолчанию для задания Asyn c - PullRequest
3 голосов
/ 16 января 2020

Я полагаю, DefaultAsyncJobExecutor - это класс, который по умолчанию выбирается как реализация интерфейса AsyncExecutor (не уверен, правильно ли это предположение или нет)

Поэтому в основном я хочу изменить время ожидания по умолчанию для асинхронного задания, время ожидания по умолчанию составляет 5 минут, что является значением двух переменных:

timerLockTimeInMillis , asyncJobLockTimeInMillis в AbstractAsyncExecutor . java**

Я пытался изменить оба значения с помощью соответствующих методов установки и пытался напрямую изменить значение в конструктор моей пользовательской реализации, подобный этому:

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-коде есть следующий код для запуска экземпляра процесса

-> Запуск экземпляра процесса рабочего процесса асинхронно что-то подобное

-> Так как у меня настроен прослушиватель, я смог увидеть в журналах, что активность запуска события начинается каждые 5 минут

, например, событие-1 - первое событие, затем это событие перезапускается через 5 минут (продолжительность отображается в журналах консоли)

Не уверен, что мне не хватает на этом этапе, дайте мне знать, если требуются какие-либо другие детали

Ответы [ 2 ]

1 голос
/ 16 января 2020

если файл jar не находится под вашим контролем, вы не можете изменить значение по умолчанию count, потому что в jar классы скомпилированы. Вы можете изменить только значение внутри объекта, чтобы вы могли использовать ключевое слово super:

class CustomImplementation extends DefaultExecutedClass{
  private int custom_count=1234;

  CustomImplementation(){
    super();
    super.count = this.custom_count;
  }

}

, в противном случае, если вам действительно нужно изменить исходный файл, вы должны извлечь его из банки

0 голосов
/ 29 января 2020

При использовании стартеров Flowable Spring Boot. Затем используется SpringAsyncExecutor, здесь используется TaskExecutor из Spring. Это предоставляется в виде бобов. Чтобы изменить его значения, вы можете использовать свойства.

например

flowable.process.async.executor.timer-lock-time-in-millis=600000
flowable.process.async.executor.async-job-lock-time-in-millis=600000

Примечание: Будьте осторожны при изменении этого. Если запуск ваших процессов занимает более 5 минут, это означает, что у вас есть транзакция, открытая на этот период времени.

...