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:
|
| 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);
}
}