Pruebas transacción en eventos

Se realizaron las pruebas correspondientes en ambiente local apuntando a la BDC de PRE. intentando replicar un error que ejecute un rollback en un caso de uso, esperando que el flujo ideal de integración BDC-> CDE  se cumpla.


BDCCDE
(tick)(tick)Se ejecuta el caso de uso en BDC y se dispersa en CDE correctamente.
(tick)(error)Se ejecuta correctamente en BDC, y  falla CDE, pero al tener el registro en la tabla de eventos entra en flujo de reintento
(error)(error)Falla en BDC y no se dispersa al CDE

La prueba realizada consisten en:

1.- Ejecutar un servicio SIF v3 y enviar una excepción después de la inserción de en la tabla events.

2.- La transacción no se completa y se hace rollback.

Tras varias pruebas se concluye que el trigger se ejecuta y continua con el flujo publicando el evento al CDE aun cuando se hace rollback. Provocando una inconsistencia entre BDC → CDE.


BDCCDE
(error)(tick)Falla en BDC y se dispersa al CDE


Solución.

Para evitar el resultado RED-GREEN:

Se elimina el trigger en la tabla events.

Se desarrolló un middleware que se ejecuta al terminar el request y antes  de terminar el proceso de envio:

  • Recupera los eventos persistidos durante el request.
  • Para cada uno de los eventos ejecuta el procedimiento almacenado correspondiente, y se continua con el flujo normal:
    •  SP →Lambda ->CDE