Uso de Debulker
¿Qué es un Debulker?
Un Debulker es un módulo de aplicación responsable de dividir archivos grandes en componentes que se usarán para el procesamiento. Debulker espera recibir una notificación sobre el archivo que debe “debulkearse”, junto con el nombre de la configuración que se utilizará para dividir el archivo en componentes.
Debulker en tu aplicación
El primer paso es añadir los módulos starter de debulker al pom de tu aplicación IPF:
<!--Responsible for debulking-->
<dependency>
<groupId>com.iconsolutions.ipf.debulk</groupId>
<artifactId>ipf-debulker-starter</artifactId>
</dependency>
<!--Responsible for cleaning up after bulk components are processed by interested party-->
<dependency>
<groupId>com.iconsolutions.ipf.debulk</groupId>
<artifactId>ipf-debulker-housekeeping-starter</artifactId>
</dependency>
Estos módulos dependen de algunos módulos adicionales:
-
component-store: responsable de almacenar los componentes producidos por debulker.
-
ipf-debulker-new-file-notification: responsable de consumir la notificación del archivo que debe desencadenar el debulking del fichero.
-
ipf-debulker-archiver: responsable de archivar el archivo bulk tras procesarse correctamente.
-
ipf-debulker-client-processing: notifica a un sistema externo que el debulking ha finalizado y que los componentes producidos pueden procesarse. También consume la notificación del procesamiento satisfactorio de esos componentes por parte del sistema externo, para poder iniciar las tareas de housekeeping.
Añadir dependencias necesarias para los módulos starter
<!-- ipf-component-store implementation which uses mongodb to store and read components -->
<dependency>
<groupId>com.iconsolutions.ipf.componentstore</groupId>
<artifactId>ipf-component-store-mongo</artifactId>
</dependency>
<!-- Kafka receive connector implementation of ipf-debulker-new-file-notification which consumes FileNotification message which tells debulker to process bulk file -->
<dependency>
<groupId>com.iconsolutions.ipf.debulk</groupId>
<artifactId>ipf-debulker-new-file-notification-connector-kafka</artifactId>
</dependency>
<!-- ipf-debulker-archiver implementation which archives processed bulk file to local file system -->
<dependency>
<groupId>com.iconsolutions.ipf.debulk</groupId>
<artifactId>ipf-debulker-archiver-local</artifactId>
</dependency>
<!-- Kafka connector implementation of ipf-debulker-client-processing -->
<dependency>
<groupId>com.iconsolutions.ipf.debulk</groupId>
<artifactId>ipf-debulker-client-processing-connector-kafka</artifactId>
</dependency>
Configurar Debulker en tu aplicación
Para dividir un archivo de un tipo (xml, json, …) y estructura concretos, debe proporcionarse una configuración de división. Esto se puede hacer mediante la propiedad ipf.debulker.configurations. Espera un array de objetos de configuración, cada uno con:
-
name (string): se utiliza para identificar de forma única la configuración. La notificación del archivo contendrá el nombre de la configuración que se usará para realizar el debulking.
-
splitter (string): tipo de “splitter” que se utilizará para extraer los componentes. Actualmente existen xml y json.
-
component-hierarchy (object): estructura en árbol que representa la jerarquía de los componentes que se extraerán del archivo bulk. Cada nodo puede tener nodos hijos configurados que se extraerán como componentes separados. El contenido de los componentes hijos se omitirá del componente padre.
Ejemplo de configuración para debulkear un archivo XML pain.001.001.09.
ipf.debulker {
configurations = [
{
name = "pain.001.001.09"
splitter = "xml"
archive-path = "/tmp/bulk_archive"
processing-entity = "TEST-ENTITY"
component-hierarchy {
marker = "Document"
children = [
{
marker = "CstmrCdtTrfInitn.PmtInf"
children = [
{
marker = "CdtTrfTxInf"
}
]
}
]
}
}
]
}
Esta configuración nos indica que el archivo XML pain.001 se dividirá en un único componente Document, que contiene todos los elementos hijos excepto los elementos CstmrCdtTrfInitn.PmtInf, que se extraerán como componentes separados. Cada componente hijo PmtInf contendrá todos los elementos hijos excepto los elementos CdtTrfTxInf, que se extraerán como componentes hijos separados de cada PmtInf.
En el caso de un XML pain.001 con 3 elementos PmtInf, cada uno conteniendo 3 elementos CdtTrfTxInf, el debulker producirá 12 componentes:
-
1 componente Document
-
3 componentes PmtInf
-
9 componentes CdtTrfTxInf
Configurar el archivador
Dado que utilizamos ipf-debulker-archiver-local para archivar, los archivos se copiarán a la ubicación "/tmp/bulk_archive" según lo configurado.
Configuración de Docker para ipf-debulker-tutorial-app
ipf-debulker-tutorial-app:
image: ipf-debulker-tutorial-app:latest
container_name: ipf-debulker-tutorial-app
ports:
- 8080:8080
- 8559:8558
|
Mantén sin traducir nombres de propiedades, claves de configuración, rutas de archivos, IDs de anclaje, nombres de clases/paquetes y comandos. Solo traduce títulos, texto explicativo y leyendas. |