ODS Housekeeping Tasks
Las tareas de housekeeping son procesos en segundo plano recurrentes que ayudan a mantener y organizar los datos dentro de ODS.
Estas tareas utilizan el patrón Akka Cluster Singleton, asegurando que solo haya una instancia activa por clúster a la vez y evitando conflictos por ejecutar la misma tarea simultáneamente en múltiples nodos.
Estas tareas realizan funciones como enriquecimiento de datos, limpieza y mantenimiento. Cada tarea de housekeeping opera de forma independiente pero sigue el mismo marco de configuración y programación.
Las tareas de housekeeping disponibles son:
Configuración de tareas de Housekeeping
La configuración de una tarea de housekeeping sigue una estructura genérica. Sustituye <task-name> por el identificador de la tarea que se está configurando:
ods.housekeeping {
<task-name> {
# Configure to true if the task functionality is required
enabled = false
# How long to wait once ODS has started before making the first execution of the task
initial-delay = 1M
# How often to execute the task
frequency = 10s
# The Restart Strategy settings for the task's Cluster Singleton
restart-settings {
# Minimum (initial) duration until the task child actor will be started again, if it is terminated
min-backoff = 1s
# The exponential back-off is capped to this duration
max-backoff = 1s
# After calculation of the exponential back-off an additional random delay based on this factor is added, e.g. 0.2 adds up to 20% delay. In order to skip this additional delay pass in 0.
jitter-factor = 0.2
}
}
}
| A menos que se indique lo contrario en la documentación de configuración de cada tarea, los valores de configuración descritos arriba son los valores predeterminados para una tarea dada. |
Manejo de errores
Debido a la naturaleza de la implementación de tareas recurrentes, los errores se reintentan de forma natural en la siguiente ejecución recurrente.
Cualquier error lanzado durante la ejecución de una tarea se registra como advertencia sin que se tome ninguna acción. La tarea volverá a ejecutarse en breve y la funcionalidad continuará en ejecuciones posteriores.
Resumen y monitorización de tareas de Housekeeping
Hay disponible en tiempo de ejecución un resumen de qué tareas de housekeeping se han habilitado/deshabilitado y sus configuraciones.
Logging
El resumen de housekeeping se registra en el arranque.
Ejemplo de log de resumen de tareas de housekeeping
2025-05-16T09:08:09.999Z INFO 1 --- [ main] c.i.i.o.h.HousekeepingOverviewLogger :
-------------------------------------------------------------------------------------
Housekeeping Tasks
-------------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Enabled Tasks
---------------------------------------------------------------------------------
Task Name Task Scheduler Settings
---------------------------------------------------------------------------------
summary-csm-enrichment Frequency: PT1S
Initial delay: PT0S
Min backoff: PT1S
Max backoff: PT1S
Jitter factor: 0.2
summary-identity-enrichment Frequency: PT10S
Initial delay: PT1S
Min backoff: PT2S
Max backoff: PT1S
Jitter factor: 0.5
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
Disabled Tasks housekeeping-example-task-2
housekeeping-example-task-3
---------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
Endpoint de Actuator
El resumen de housekeeping está disponible como un endpoint personalizado de Spring Boot Actuator en /actuator/housekeeping-tasks. No está habilitado por defecto.
Configura management.endpoints.web.exposure.include para incluir housekeeping-tasks y habilitar el endpoint del resumen, o usa * para habilitar todos los endpoints de actuator.
-
ej.
management.endpoints.web.exposure.include = [health, info, prometheus, housekeeping-tasks].
Ejemplo de respuesta del resumen de housekeeping
{
"enabledTasks": {
"summary-identity-enrichment": {
"enabled": true,
"frequency": "PT1S",
"initialDelay": "PT0S",
"restartSettings": {
"minBackoff": "PT1S",
"maxBackoff": "PT1S",
"jitterFactor": 0.2
}
},
"summary-csm-enrichment": {
"enabled": true,
"frequency": "PT10S",
"initialDelay": "PT1M",
"restartSettings": {
"minBackoff": "PT2S",
"maxBackoff": "PT1S",
"jitterFactor": 0.5
}
}
},
"disabledTasks": [
"pds-object-id-enrichment",
"housekeeping-example-task"
]
}
Tarea de Housekeeping: Summary Identity Enrichment
Una tarea de housekeeping que enriquece los campos de identificación del Payment Summary (debtorAccount, debtorAgentBIC, creditorName, etc.) usando la información presente en el Batch Summary relacionado del pago.
Esto permite que ODS Inquiry busque estos pagos usando la información de identificación del Batch, que previamente no estaba presente en el Payment.
Esta funcionalidad debe habilitarse explícitamente mediante configuración; las opciones de configuración pueden encontrarse abajo.
Este job solo actualizará Payments que estén relacionados con un Batch Y que tengan información de identificación distinta a la del Batch relacionado.
|
Los valores presentes en el Batch Summary se consideran la fuente de la verdad para estos campos de identificación. Cuando esta funcionalidad está habilitada, cualquier valor existente de campos de identidad en un Payment Summary será sobrescrito por los valores de su Batch Summary relacionado. Esto solo aplica a Payment Summaries que tienen un Batch Summary relacionado, asociado a través del |
| Esta lógica de enriquecimiento está diseñada para consistencia eventual en las consultas del ODS Inquiry API. Como resultado, el resto del procesamiento de ODS Ingestion no depende de su finalización inmediata. |
Los campos de información de identificación objetivo son:
-
debtorAccount -
debtorName -
debtorBIC -
debtorAgentBIC -
creditorAccount -
creditorName -
creditorBIC -
creditorAgentBIC
El flujo general de alto nivel para esta tarea de housekeeping es:
Requisitos previos
-
Debe existir un Batch Summary relacionado con un Payment Summary (vía
relatedUnitOfWorkId). -
Los Payments relacionados deben tener alguno de los campos de identificación listados distintos a los del Batch correspondiente.
Seguridad
Esta tarea solo actualiza los documentos de Summary en la base de datos. No modifica MDS/PDS/Process/Custom objects.
Tarea de Housekeeping: Summary Csm Enrichment
Enriquece el campo csm del Payment Summary a partir de información disponible que pueda no haberse aplicado en tiempo de ingestión. Útil para consistencia eventual.