Verificación de claves duplicadas - Único
Al invocar checkSingleDuplicate, los elementos de datos del mensaje que se utilizan como parámetros de verificación de duplicados se mapean en una Clave de Verificación de Duplicados. Esta clave contiene estos elementos como una lista de cadenas y estas claves se guardan en el soporte servicio de caché de transacciones.
Un mensaje se considerará un duplicado si hay más de una entrada que contenga las mismas claves presente en la caché de transacciones en el momento de la verificación.
public class DuplicateCheckKey implements Serializable {
private List<String> data;
private String transactionCacheEntryType;
}
Verificación de claves duplicadas - Múltiple
Para realizar múltiples verificaciones de duplicados en una sola invocación (como realizar verificaciones de duplicados contra todas las transacciones contenidas dentro de un mensaje) el checkMultipleDuplicate se puede llamar a la función.
Se realizará una verificación de duplicados para cada entrada en el mapa proporcionado y las respuestas se agruparán en una única respuesta que se enviará de vuelta al flujo de llamada. Si utiliza esta funcionalidad, debe proporcionar un Transacción Cache[Tipo de entrada además del Mapa de Clave de Verificación de Duplicados. Si no se especifica uno,
un valor predeterminado de CheckMultipleDuplicate se utiliza, que se toma del nombre de la acción.
| Los resultados de la verificación de duplicados múltiples se recopilan en un mapa, por lo que se debe considerar el número esperado de entradas en el mapa resultante, ya que esto se almacena contra el agregado de flujo. Si se esperan más de 500 entradas, un enfoque alternativo para la verificación de duplicados múltiples en el cliente flo podría ser más apropiado. |
public class DuplicateCheckMultipleRequest implements Serializable {
String transactionCacheEntryType;
Map<String, DuplicateCheckKey> duplicateCheckKeyMap;
}
Verificación de duplicados clave Respuesta múltiple
Si se solicita una verificación de duplicados múltiple, los resultados se agruparán en un Map, que será devuelto como datos comerciales al flujo. Si se contienen duplicados en el conjunto de resultados, el código de respuesta devuelto por el checkMultipleDuplicate la llamada será CONTAINSDUPLICATES, de lo contrario el código de respuesta
devuelto será NODUPLICATES
public class DuplicateCheckMultipleResponse implements Serializable {
Map<String, DuplicateResponse> duplicateCheckResponseMap;
}
Persistencia
El caché de transacciones es proporcionado por un PersistentTransactionCacheService. Consulte servicio de caché de transacciones. para más detalles sobre el servicio de caché de transacciones.
Este servicio está respaldado por MongoDB, de modo que los datos necesarios para poblar la caché y realizar verificaciones de duplicados sobrevivan a un reinicio del servicio.
TransactionCacheEntryType
Por defecto, las entradas asociadas con invocaciones de verificación de duplicados únicas tendrán un TransactionCacheEntryType de CheckSingleDuplicate mientras que las entradas asociadas a la verificación de duplicados múltiples tendrán un tipo de entrada de CheckMultipleDuplicate, que se toma del nombre de la acción. El tipo de entrada en la caché de transacciones se utiliza en el momento de guardar y encontrar dentro de la caché. Incluso si la misma clave de verificación de duplicados existe como una entrada en la caché de transacciones, solo se considerará un duplicado si el transactionCacheEntryType es el mismo.
Las Implementaciones del Cliente son capaces de proporcionar custom tipos de entradas de caché de transacción. Esto podría ser útil para cuando:
-
Existen dos flujos separados que realizan verificaciones de duplicados y desean restringir las respuestas duplicadas únicamente a las claves que el flujo ha visto.
-
Existe un requisito para tener diferentes períodos de duración para diferentes llamadas a funciones. Se pueden establecer horarios de purga personalizados según el tipo.
Referir Proporcionando Personalizado TransactionCacheEntryTypes para más detalles sobre cómo un custom se puede definir el tipo de entrada de transacción.
Duración Duplicada
La duración de la existencia de una entrada de Clave de Verificación de Duplicados en la caché determina efectivamente el período de tiempo durante el cual un mensaje será considerado un duplicado. Las entradas de Clave de Verificación de Duplicados son purgadas rutinariamente del servicio de caché de transacciones de soporte.
Por defecto, la purga se llevará a cabo a medianoche todos los días y eliminará todas las entradas anteriores a la medianoche. Actuando efectivamente para limpiar las transacciones del día anterior. Puede proporcionar una configuración si este horario no satisface sus necesidades.
Ahorro ansioso
Las claves de verificación de duplicados se guardan ansiosamente en la caché y luego se verifican en busca de duplicados. Si se encuentra más de una entrada, entonces al menos una existía previamente, y el mensaje se considerará un duplicado.
Este guardado "ansioso" es una alternativa preferible al proceso de:
-
Lea desde la caché con la clave derivada
-
Si hay un resultado, entonces marque un duplicado, de lo contrario, guarde en la caché.
Reduce la ventana para que los duplicados concurrentes se filtren, a costa de almacenar un registro adicional.
Soportado Message Type s
El floclient tiene la capacidad de soportar cualquier tipo de mensaje o atributos de mensaje para la verificación de duplicados debido al uso de específicos del cliente.mapping funciones para la verificación de duplicados.
El siguiente predeterminado mapping se proporcionan funciones.
| Nombre de la Función de Mapeo Predeterminado | ISO 20022 Message Type | Campos mapeados a la Clave de Verificación de Duplicados | Descripción |
|---|---|---|---|
Duplicate Single Map From Pain001 |
pain001 |
|
Útil para mensajes que contienen una única transacción |
Duplicate Single Map From Pacs008 |
pacs008 |
|
|
Duplicate Multiple Map From Pain001 |
pain001 |
|
Útil para mensajes que contienen muchas transacciones. |
Duplicate Multiple Map From Pacs008 |
pacs008 |
|
Las Claves de Verificación de Duplicados proporcionadas por defecto mapping las funciones no tienen conocimiento del tipo de mensaje. Diferentes mensajes pueden compartir los mismos valores de campo.
| Para evitar la identificación errónea de un duplicado entre tipos de mensajes, utilice diferentes tipos de entradas en la caché de transacciones. Alternativamente, si implementa su propio mappers, considere incluir un valor dentro de la clave que asegure que sea único entre los tipos de mensaje. |