class TaskData {
int id;
String status;
}
class TaskDbScheduler() {
private final SchedulerClient schedulerClient;
private final OneTimeTask oenTimeTask;
public TaskInstance schedule(TaskData taskData) {
Instant nextExecutionTime = taskData.getNextAttempt();
TaskInstance instance =
oenTimeTask.instance(taskData.getId()(), taskData);
boolean scheduled = schedulerClient.scheduleIfNotExists(instance, nextExecutionTime);
return instance;
}
}
class TaskHandler{
TaskDbScheduler scheduler; // causes circular dependency
void handle(TaskInstance taskInstance, ExecutionContext executionContext) {
var read = xyzservice.run(taskInstance.getData());
if(read == fail) {
// reschedule it after two seconds, with taskdata.toBuilder().status("delayed").build();
}
}
}
Я использую db-scheduler 15.3.0.
Я пытаюсь перенести задачу в обработчике при некоторых условиях, но это всегда приводит к ошибке циклической зависимости. Использование SchedulerClient непосредственно в обработчике также не обеспечивает возможности изменения данных задачи. Есть ли способ перенести задачу таким образом?
class TaskDbScheduler() { private final SchedulerClient schedulerClient; private final OneTimeTask oenTimeTask; public TaskInstance schedule(TaskData taskData) { Instant nextExecutionTime = taskData.getNextAttempt(); TaskInstance instance = oenTimeTask.instance(taskData.getId()(), taskData); boolean scheduled = schedulerClient.scheduleIfNotExists(instance, nextExecutionTime); return instance; } }
class TaskHandler{ TaskDbScheduler scheduler; // causes circular dependency
void handle(TaskInstance taskInstance, ExecutionContext executionContext) { var read = xyzservice.run(taskInstance.getData());
if(read == fail) { // reschedule it after two seconds, with taskdata.toBuilder().status("delayed").build();
} } } [/code] Я использую db-scheduler 15.3.0. Я пытаюсь перенести задачу в обработчике при некоторых условиях, но это всегда приводит к ошибке циклической зависимости. Использование SchedulerClient непосредственно в обработчике также не обеспечивает возможности изменения данных задачи. Есть ли способ перенести задачу таким образом?