O Retry declara novas tentativas nos passos de uma rota.

Ele faz parte de um conjunto de componentes que trabalham com subpipelines para executar as suas funções.

Para trabalhar com esse tipo de componente, é importante levar em consideração:

Subpipeline definido no bloco "onProcess"

O pipeline definido nesse bloco é executado a cada nova tentativa.

Subpipeline definido no bloco "onException"

O pipeline definido nesse bloco é executado sempre que uma tentativa resultar em falha. Mais detalhes abaixo.

Dê uma olhada nos parâmetros de configuração do componente:

  • Maximum Number of Retries: número máximo de tentativas. A primeira tentativa também conta, então se o passo falhar na primeira execução e você deseja que seja feita uma nova tentativa, o valor nesse parâmetro deve ser igual a 2.
  • Timeout Of The Whole Retry Operation: duração máxima de cada tentativa, incluindo a primeira (em milissegundos)
  • Fail On Error: se a opção for ativada, a execução do bloco Retry que atingir o número máximo de tentativas ou a duração máxima terminará com erro e será interrompida; do contrário, a execução do pipeline continua, mas o resultado vai mostrar um valor falso para a propriedade success

Fluxo de mensagens

Entrada

Qualquer estrutura é aceita, já que o processo de uma nova tentativa passa por um subpipeline.

Saída

Trata-se da mensagem de saída do último passo processado.

Informando sucesso para uma execução do bloco Retry

O bloco Retry espera que uma propriedade "success" com o valor “true” seja informada no último passo do subpipeline para que a execução seja considerada bem sucedida. Se um erro ocorrer ou se a propriedade “success” for informada com o valor “false” ou vazia, o bloco Retry entenderá que uma nova tentativa deverá ser executada.

Tratamento de Erros

Quando um erro ocorre durante o processamento do subpipeline do bloco Retry, o subpipeline de exceção será invocado, caso esteja definido. Nesse subpipeline, é possível:

  • ter acesso aos detalhes do erro que ocorreu durante o processamento da última tentativa
  • definir se o bloco Retry continua as tentativas, informando uma propriedade “success” com o valor “false”. Caso seja especificada uma propriedade “success” com o valor “true”, então o bloco Retry será finalizado com sucesso e nenhuma outra tentativa será executada.

Caso um componente de erro, como o Throw Error ou o Assert, seja utilizado dentro do subpipeline de exceção ou um erro ocorra, então o bloco Retry será finalizado e o erro será propagado para o pipeline.

Encontrou sua resposta?