У меня есть EJB со следующим запланированным методом:Добавить дополнительный триггер @Schedule
@Schedule(hour = "*", minute = "*", second = "*/5", persistent = false)
public void runWorkerManager() {
final boolean jobProcessed = this.workerManager.execute();
if (jobProcessed) {
this.runWorkerManager();
}
}
Идея заключается в том, что часто является вторым (и третьим и так далее) заданием на обработку после того, как один обрабатываются, поэтому я хотел бы снова запустить метод execute()
, как показано выше.
Проблема в том, что делать это таким образом очень плохо, так как я не выпускаю нить EJB
. Вместо этого я хотел бы добавить дополнительный триггер в @Schedule
, который будет запускать весь runWorkerManager()
снова как можно скорее. Однако я не нашел способа сделать это.
Возможно ли это? Если это не так, есть ли другой способ получить подобное поведение?
Вы решили создать новый поток [managed] (https://concurrency-ee-spec.java.net/javadoc/javax/enterprise/concurrent/ManagedExecutorService.html)? –