Documentation for a newer release is available. View Latest

Manejo de reintentos a través de estados no concluyentes

Los reintentos solo se cancelan si una request/response ha sido marcada como completing en el dominio externo (ver Concepts). Por lo tanto, podrías tener el caso en el que quieras reintentar una transacción a través de múltiples estados que podrían incluir request/responses no concluyentes.

En el siguiente ejemplo hemos modelado una request/response en un External Domain, de las cuales una no es concluyente (la casilla Completing no está marcada) y la otra sí es concluyente (es decir, la casilla Completing está marcada).

Retries

El comportamiento de eventos 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:

Flow

Cuando se recibe la Insufficient Funds Response, el estado se mueve a Insufficient Funds y los reintentos no se detienen porque la respuesta es no concluyente. Los reintentos seguirán ocurriendo incluso cuando recibamos la primera OK Response porque ahora estamos en el estado Insufficient Funds pero los reintentos se estaban lanzando desde el estado Checking Balance.

Puedes detener este reintento una vez que se reciba la respuesta concluyente configurando las propiedades de retry como sigue:

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 InsufficientFunds, y no intentamos ningún reintento en el estado CheckingBalance.