Manejo de reintentos en estados no concluyentes
Los reintentos solo se cancelan si una solicitud/respuesta ha sido marcada como completada en el dominio externo (consulte Conceptos). Por lo tanto, podría darse el caso en el que desee reintentar una transacción en múltiples estados, lo que podría incluir solicitudes/respuestas no concluyentes.
En el siguiente ejemplo hemos modelado una solicitud/respuesta en un Dominio Externo, de la cual una no es completada (la bandera de completado no está marcada) y la otra es completada (es decir, la bandera de completado está marcada).
El comportamiento del evento en este ejemplo simplemente mueve el estado en función de la respuesta; ya sea Insufficient Funds o Balance OK, lo que completaría el flujo:
Cuando se recibe la Respuesta de Fondos Insuficientes, el estado se cambia a Fondos Insuficientes y los reintentos no se detienen porque la respuesta es una respuesta no concluyente. Los reintentos continuarán ocurriendo incluso cuando recibamos la primera Respuesta OK porque ahora estamos en el estado Fondos Insuficientes, pero los reintentos se estaban activando desde el estado Verificando Saldo.
Puede detener este reintento una vez que se reciba la respuesta completa configurando las propiedades de reintento de la siguiente manera:
ipf.flow.Testflow.CheckingBalance.CheckBalance.initial-retry-interval = 1s
ipf.flow.Testflow.CheckingBalance.CheckBalance.max-retries = 0
ipf.flow.Testflow.InsufficientFunds.CheckBalance.initial-retry-interval = 1s
ipf.flow.Testflow.InsufficientFunds.CheckBalance.max-retries = 3 #or however many attempts
ipf.flow.Testflow.InsufficientFunds.CheckBalance.backoff-type = USER_DEFINED
ipf.flow.Testflow.InsufficientFunds.CheckBalance.jitter-enabled = false
ipf.flow.Testflow.InsufficientFunds.CheckBalance.custom-backoffs = [20s, 40s] #or whatever values you want here
Esta configuración mueve efectivamente las capacidades de reintento al estado de FondosInsuficientes, y no intentamos ningún reintento en el estado de VerificandoSaldo.