Scheduling un Trabajo de Sondeo de Archivos

Esta sección le guiará sobre cómo configurar un trabajo de sondeo de archivos en su aplicación utilizando IPF File Poller.

Paso 1: Agregue la dependencia

Agregue la siguiente dependencia a su pom.xml:

<dependency>
    <groupId>com.iconsolutions.ipf.filepoller</groupId>
    <artifactId>ipf-file-poller-scheduler</artifactId>
</dependency>
ipf-file-poller-api viene empaquetado con ipf-file-poller-scheduler, por lo que no necesita agregar esta dependencia por separado.

Si importa el Icon BOM, o utiliza el Icon BOM como padre, no es necesario proporcionar una versión.

Paso 2: Configure un trabajo de sondeo

Se pueden crear múltiples trabajos de sondeo por aplicación de sondeo de archivos. Para crear un trabajo de sondeo que será scheduled por el Poller de Archivos Scheduler y ejecutado por el Poller de Archivos Scheduled Manejador de Ejecución de Tareas, añada la siguiente configuración a su archivo de configuración (por ejemplo,ipf.conf) utilizando el ejemplo a continuación como guía:

ipf.file-poller {
  application-id = default-id (1)
  rehydrate-scheduler-jobs = true (2)
  pollers = [ (3)
    {
      cron= "*/10 * *? * *" (4)
      job-schedule-seconds = "20" (5)
      file-path = "/app/share/ipf/inbound" (6)
      changed-file-job-reschedule-policy = ALWAYS (7)
      file-content-hash-buffer-bytes = 8192 (8)
      file-processing-parallelism = 128 (9)
      file-processing-buffer = 500 (10)
      patterns = [ (11)
        "*.xml" (12)
      ]
    }
  ]
}

ipf.persistent.scheduler.past-acceptance-window = 30s (13)
1 El identificador de la aplicación de sondeo de archivos
2 Parámetro que determina si el sondeador de archivos rehidratará todos los trabajos scheduled por el Poller de Archivos Scheduled Manejador de Ejecución de Tareas al iniciar la aplicación.
3 La lista de trabajos de sondeo que pueden ser configurados para esta aplicación de sondeo de archivos
4 El cron programa para este trabajo de votación
5 El scheduling retraso en segundos para cada trabajo que será scheduled por el Poller de Archivos Scheduled Manejador de Ejecución de Tareas. Este retraso cumple dos funciones:
  1. Proporciona una re‑scheduling ventana: crea un búfer corto durante el cual un trabajo scheduled para un archivo puede ser cancelado y re‑scheduled si el archivo cambia entre ciclos de sondeo. Esto requiere establecer el retraso mayor que el intervalo de sondeo para que la ventana de cancelación abarque al menos un ciclo de sondeo.

  2. Mitiga las ejecuciones de trabajos perdidas: reduce la posibilidad de que un trabajo sea omitido cuando una carga de aplicación pesada causa retrasos que empujan el scheduled tiempo de ejecución en el pasado.

6 La ubicación de los archivos que deben ser recuperados y procesados por el Poller de Archivos Scheduled Manejador de Ejecución de Tareas.
7 La política de reprogramación de archivos cambiados. Vea el Política de Reprogramación de Trabajo de Archivos Cambiados sección para más detalles sobre las políticas disponibles.
8 El tamaño del búfer en bytes para el BufferedInputStream utilizado en el hash de contenido de archivos.
9 El número máximo de archivos recuperados que pueden tener su contenido y metadatos hashados de manera concurrente. Tamaño del búfer que controla el lote máximo de archivos recuperados (después de la hash) para la determinación del estado procesado.
10 Una lista de filtros comodín que pueden ser configurados para este trabajo de sondeo.
11 Un patrón de comodín que especifica que solo .xml los archivos son recuperados y procesados por el Poller de Archivos Scheduled Manejador de Ejecución de Tareas para este trabajo de encuesta.
12 Un parámetro opcional proporcionado por el IPF Persistent Scheduler que permite scheduled trabajos a ser triggered retroactivamente. Puede ser utilizado en conjunto con el trabajo scheduling el retraso mencionado anteriormente para reducir aún más la posibilidad de que se omita un trabajo bajo una carga de aplicación pesada.

Paso 3: Implemente el Adaptador de Sondeo de Archivos

Después de configurar nuestro trabajo de sondeo, necesitamos crear una implementación del FilePollerAdapter interfaz, que contendrá la lógica que deseamos que se llame cada vez que se ejecute un trabajo scheduled por el Poller de Archivos Scheduled Manejador de Ejecución de Tareas se ejecuta. Un ejemplo de esto se muestra a continuación:

@RequiredArgsConstructor
public class FilePollerAdapterImpl implements FilePollerAdapter {

    private final NotificationSender notificationSender;

    @Override
    public CompletionStage<Void> triggerFileProcessing(FileDetails fileDetails) {
        File file = new File(fileDetails.getFilePath());
        FilePolledNotification filePolledNotification = FilePolledNotification.builder()
                .fileName(file.getName())
                .configName("pain. 001. 001. 09")
                .fileProvider("local")
                .filePath(fileDetails.getFilePath())
                .build();
        return notificationSender.send(filePolledNotification)
                .thenApply(ignored -> null);
    }
}