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 transacción cache servicio.

Un mensaje se considerará un duplicado si hay más de una entrada que contenga las mismas claves en la transacción.cache 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 que realiza la 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 business data 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

La transacción cache es proporcionado por un PersistentTransactionCacheService. Consulte transacción cache servicio. para más detalles sobre la transacción cache servicio.

Este servicio está respaldado por MongoDB, por lo que los datos necesarios para completar el cache y realice verificaciones de duplicados sobrevive a un servicio restart.

Tipo De Entrada De Cache De Transacción

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. La transacción cache el tipo de entrada se utiliza en el momento de guardar y encontrar dentro del cache. Incluso si la misma clave de verificación de duplicados existe como una entrada en la transacción cache, solo se considerará un duplicado si el transactionCacheEntryType es el mismo.

Las Implementaciones del Cliente son capaces de proporcionar custom transacción cache tipos de entrada. Esto podría ser útil para cuando:

  • Hay dos flujos separados que realizan verificaciones de duplicados y desean restrict respuestas duplicadas solo a las claves que el flujo ha visto.

  • Existe un requisito para tener diferentes períodos de duración para diferentes llamadas a funciones. Custom Los horarios de purga pueden configurarse según el tipo.

Referir Proporcionando Custom TransactionCacheEntryTypes para más detalles sobre cómo un custom se puede definir el tipo de entrada de transacción.

Duración Duplicada

El tiempo que una entrada de Clave de Verificación Duplicada existe dentro de la cache determina de manera efectiva el período de tiempo durante el cual un mensaje será considerado un duplicado. Las entradas de la Clave de Verificación de Duplicados se eliminan rutinariamente de la transacción de soporte.cache servicio.

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 el cache y luego se verificará si hay 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 cache con clave derivada

  • Si hay un resultado, entonces flag un duplicado, de lo contrario guarde en el cache.

Reduce la ventana para que los duplicados concurrentes se escapen, a costa de almacenar un registro adicional.

Soportado Message Type s

El floclient tiene la capacidad de soportar cualquier message type 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.

Predeterminado Mapping Nombre de la Función ISO 20022 Message Type Campos mapeados a la Clave de Verificación de Duplicados Descripción

Duplicate Single Map From Pain001

pain001

.pmtInf[0].dbtrAcct.id.othr.id .pmtInf[0].cdtTrfTxInf[0].pmtId.endToEndId .pmtInf[0].cdtTrfTxInf[0].amt.instdAmt.value .pmtInf[0].cdtTrfTxInf[0].amt.instdAmt.ccy

Útil para mensajes que contienen una única transacción

Duplicate Single Map From Pacs008

pacs008

.cdtTrfTxInf[0].pmtId.endToEndId .cdtTrfTxInf[0].dbtrAcct.id.othr.id .cdtTrfTxInf[0].intrBkSttlmAmt.value .cdtTrfTxInf[0].intrBkSttlmAmt.ccy

Duplicate Multiple Map From Pain001

pain001

.pmtInf[0].dbtrAcct.id.othr.id .pmtInf[0].cdtTrfTxInf[0].pmtId.endToEndId .pmtInf[0].cdtTrfTxInf[0].amt.instdAmt.value .pmtInf[0].cdtTrfTxInf[0].amt.instdAmt.ccy

Útil para mensajes que contienen muchas transacciones.

Duplicate Multiple Map From Pacs008

pacs008

.cdtTrfTxInf[0].pmtId.endToEndId .cdtTrfTxInf[0].dbtrAcct.id.othr.id .cdtTrfTxInf[0].intrBkSttlmAmt.value .cdtTrfTxInf[0].intrBkSttlmAmt.ccy

Las claves de verificación de duplicados proporcionadas por defecto mapping las funciones no tienen conocimiento de la message type. Diferentes mensajes pueden compartir los mismos valores de campo.

Para evitar la identificación errónea de un duplicado entre message type s, utilice una transacción diferente cache tipos de entrada. Alternativamente, si implementa su propio mappers, considere incluir un valor dentro de la clave que asegure que sea único entre message type s.