Procesamiento de Entradas de Pago Ejecución de Purga de Datos
La purga elimina documentos de la executionInfos colección.
Este proceso asegura que, después de que todas las Transacciones para una Instrucción sean procesadas con éxito, el registro de Información de Ejecución para la Instrucción es eventually eliminado de la base de datos.
Para habilitar la Purga, se requieren las siguientes acciones:
-
Crear índices TTL (Tiempo de Vida): Este paso es obligatorio, ya que permite que la base de datos purgue automáticamente los elementos en las colecciones. Sin estos índices, no se llevará a cabo ninguna purga.
-
Conjunto
ttlyexpiryDatecampos: La aplicación misma establece elttlcampo (requerido para CosmosDB) y elexpiryDatecampo (requerido para MongoDB) cuando una Instrucción ha terminado de procesarse con éxito. Estos campos determinan el período de retención para los elementos antes de que sean eliminados; el período de retención es configurable y se explica en detalle en el Tiempo de Vida (TTL) Configurable sección.
| Los índices TTL deben ser creados porque la base de datos depende de estos índices para purgar entradas. Sin índices TTL, la información de ejecución no será eliminada de la base de datos. |
Por defecto, todos los índices se crean automáticamente al iniciar la aplicación y admiten tanto MongoDB y Azure CosmosDB for MongoDB.
Para la creación manual de índices, consulte MongoDB or Azure CosmosDB para MongoDB.
La siguiente configuración controla la purga de información de ejecución:
ipf.core.payment-entry-processor.storage {
# This flag determines if indexes should be created during application startup.
# The default value is true.
create-indexes = true (1)
# If ipf.mongodb.create-indexes is specified, it will take precedence over this setting.
create-indexes = ${? ipf.mongodb.create-indexes} (2)
# Specifies the database type the application is using. This is crucial as each database requires a slightly different configuration.
# The default mode is "mongo". Available options are: "mongo" for MongoDB and "cosmosdb" for Azure CosmosDB for MongoDB.
database-mode = mongo (3)
# If ipf.mongodb.database-mode is specified, it will take precedence over this setting.
database-mode = ${? ipf.mongodb.database-mode} (4)
# PaymentEntries triggered for 'housekeeping' will be deleted after the configured time-to-live duration has elapsed.
time-to-live = 30d (5)
# The commit quorum to use when creating indexes,
# see https://www.mongodb.com/docs/manual/reference/command/createIndexes/#create-index-with-commit-quorum for more info
commit-quorum = "votingMembers" (6)
# If ipf.mongodb.commit-quorum is specified, it will take precedence over this setting.
commit-quorum = ${? ipf.mongodb.commit-quorum} (7)
}
<1>`create-indexes` está habilitado por defecto. Esto creará todos los índices requeridos, incluyendo el índice TTL necesario para la purga. Si los índices deben ser creados manualmente (por ejemplo, a través de scripts de implementación), esto puede ser deshabilitado configurando a false.
<2>`ipf.mongodb.create-indexes` puede ser utilizado en lugar del ipf.htm.mongodb.purging.create-indexes propiedad.
<3>`database-mode` se establece en 'mongo' por defecto. Esto especifica qué base de datos compatible está utilizando. Establezca esto en mongo para MongoDB or cosmosdb para Azure CosmosDB para MongoDB La aplicación creará los índices TTL apropiados basados en esta propiedad.
<4>`ipf.mongodb.database-mode` puede ser utilizado en lugar del ipf.htm.mongodb.purging.database-mode propiedad.
<5>`time-to-live` se establece en 30 días por defecto. Esto especifica el período de retención del registro de Información de Ejecución de una Instrucción procesada con éxito.
El formato de duración es cualquier formato compatible con HOCON.
<6>`commit-quorum` dicta cuántas réplicas deben reconocer la creación del índice antes de que se considere exitosa. Para más detalles, consulte creating índices con quórum de confirmación.
<7>`ipf.mongodb.commit-quorum` puede ser utilizado en lugar del ipf.htm.mongodb.purging.commit-quorum propiedad.
Tiempo de Vida (TTL) Configurable
La información de ejecución en el Procesador de Entradas de Pago tiene un TTL configurable.
El valor se establece utilizando el ipf.core.payment-entry-processor.storage.time-to-live clave de configuración.
El TTL se aplica inmediatamente después de que todas las Transacciones para la Instrucción se procesen con éxito.
Por ejemplo, si el TTL es de 3d y el procesamiento de la Instrucción se finaliza el 01/01/2025, entonces la Información de Ejecución relacionada expirará (se eliminará de la base de datos) el 04/01/2025.
| El TTL predeterminado está configurado para 30 días. |
Creación Manual de Índices TTL para MongoDB
Para MongoDB, cree índices TTL en el expiryDate campo, que indica la fecha exacta en que un artículo debe ser eliminado. Para más detalles, consulte Expire Documentos a una Hora Específica del Reloj.
db.getCollection("executionInfos").createIndex({ "expiryDate": 1 }, { expireAfterSeconds: 0 })
`ipf.core.payment-entry-processor.storage.time-to-live`se utiliza para calcular la fecha futura en la que se eliminará el documento.
Creación Manual de Índices TTL para Azure CosmosDB para MongoDB
Para Azure CosmosDB para MongoDB, cree índices TTL en el interno _ts campo, que contiene una marca de tiempo de la última modificación. Además, los documentos necesitan un ttl campo entero que representa el período de retención en segundos. Para más información, consulte Time para Vivir (TTL) en Azure Cosmos DB y Expire datos con Azure Cosmos DB’s API para MongoDB.
db.getCollection("executionInfos").createIndex({"_ts":1}, {expireAfterSeconds: -1})
ipf.core.payment-entry-processor.storage.time-to-live`se convierte en segundos y establece el `ttl campo. Azure CosmosDB para MongoDB purgará el documento después de este período.
¿Cómo deshabilitar la purga?
La purga puede deshabilitarse al no crear los índices TTL en executionInfos colecciones.
Asegúrese de que la creación automática de índices esté desactivada configurando ipf.core.payment-entry-processor.storage.create-indexes to false, de lo contrario se crearán índices en el próximo inicio de la aplicación.
|
Aunque se eliminen los índices, el Liberador de Pagos continuará estableciendo ttl y expiryDate campos que no tienen efecto en la purga hasta que se recrean los índices.
|