Rehidratación de Trabajo
Por defecto, el persistent scheduler el módulo intentará rehidratar los trabajos de acuerdo con los estados descritos aquí
En algunas circunstancias, usted puede querer retrasar esta rehidratación hasta que haya realizado algún procesamiento posterior. Por ejemplo, si desea cancelar algunos trabajos recurrentes almacenados en la base de datos y recargarlos desde la última configuración. Puede que desee que estas dos tareas se completen antes de la rehidratación de los trabajos para evitar cualquier conflicto de procesamiento.
En este caso puede actualizar la siguiente propiedad:
ipf.persistent.scheduler.automatically-rehydrate-jobs`to `false. Esto causará la rehidratación de trabajos desde la base de datos de nuevo en el scheduler solo debe ocurrir al recibir un RehydrateAndStopCommand mensaje por el JobRehydratorActor.
Establecer la propiedad anterior permite a los proyectos posteriores controlar el momento de la Rehidratación del Trabajo.
La rehidratación de trabajos es una actividad de inicio de aplicación única. Como tal, el JobRehydratorActor se apagará después de procesar un RehydrateAndStopCommand.
|
Comandos para el JobRehydratorActor puede ser enviado utilizando AskWithRetry. Las siguientes propiedades configuran los reintentos de los comandos enviados a este actor:
| Propiedad | Predeterminado |
|---|---|
|
2s |
|
2 |
|
0. 2 |
|
5 |
Puede conectar el SchedulerRehydrationRetryProperties clase para aprovechar la configuración anterior y AskWithRetry patrón por ejemplo:
@RequiredArgsConstructor
public class FilePollerScheduler {
private final SchedulerRehydrationRetryProperties schedulerRehydrationRetryProperties;
public CompletionStage<Void> scheduleFilePollingJobs() {
//.. additional logic to perform before rehydration
AskWithRetry<SchedulingCommand, Done> askWithRetry = schedulerRehydrationRetryProperties.newRetryBuilder()
.ref(processRehydratedJobsSchedulerSingleton)
.msgFactory(JobRehydratorActor. RehydrateJobsCommand::new)
.build();
return askWithRetry.start()
.thenAccept(__ -> log.debug("Rehydrate called after custom logic"));
}