Retry

Conheça o componente e saiba como utilizá-lo.

Peter Kreslins Junior avatar
Escrito por Peter Kreslins Junior
Atualizado há mais de uma semana

IMPORTANTE: esta documentação foi descontinuada. Leia a documentação Retry atualizada no nosso novo portal de documentação.

O Retry permite novas tentativas de execução de passos definidos em um subpipeline.

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 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 da última tentativa será entregue ao próximo componente.

Fluxo de mensagens

Entrada

Qualquer estrutura é aceita.

Saída

Mensagem de saída do último passo processado.

Definindo o subpipeline que é executado a cada tentativa

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

  • Subpipeline definido em "onProcess": subpipeline a ser executado a cada nova tentativa.

  • Subpipeline definido em "onException": subpipeline a ser executado sempre que uma tentativa resultar em falha.

Clique aqui para entender melhor o funcionamento de subpipelines.

IMPORTANTE: a cada nova tentativa, o primeiro passo do subpipeline definido em onProcess recebe a mensagem de saída do último passo processado. Portanto, dados a serem reutilizados nas novas tentativas devem ser devidamente tratados para que possam ser acessíveis durante as novas tentativas (exemplo.: manipulação dos dados através de componentes Session).

Informando sucesso para uma execução do componente Retry

O 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 for inexistente, o Retry entenderá que uma nova tentativa deverá ser executada.

Tratamento de Erros

Quando um erro ocorre durante o processamento do subpipeline em onProcess, o subpipeline em onException será invocado se estiver definido.

No onException, é possível:

  • ter acesso aos detalhes do erro que ocorreu durante o processamento da última tentativa

  • definir se o Retry continua as tentativas, informando uma propriedade “success” com o valor false ou não a definindo. Caso a propriedade “success” seja especificada com o valor true, então o Retry será finalizado com sucesso e nenhuma outra tentativa será executada.

Cenários de utilização do componente Retry com tratamento de erros

Propriedade "Fail on Error" habilitada e nenhum subpipeline definido em onException

  • o pipeline será interrompido após todas as tentativas

  • um erro será emitido a partir do componente Retry

  • nenhum outro componente será invocado após o Retry

Propriedade "Fail on Error" habilitada e um subpipeline definido em onException

  • o pipeline será interrompido após todas as tentativas

  • o subpipeline definido em onException será executado após cada tentativa

  • um erro será emitido a partir do componente Retry

  • nenhum outro componente será invocado após o Retry

Propriedade "Fail on Error" desabilitada e nenhum subpipeline definido em onException

  • o pipeline não será interrompido após todas as tentativas

  • nenhum erro será emitido a partir do componente Retry

  • o próximo componente será invocado recebendo a mensagem de saída do Retry

Propriedade "Fail on Error" desabilitada e um subpipeline definido em onException

  • o pipeline não será interrompido após todas as tentativas

  • o subpipeline definido em onException será executado após cada tentativa

  • nenhum erro será emitido a partir do componente Retry

  • o próximo componente será invocado recebendo a mensagem de saída do Retry

IMPORTANTE: caso um componente de erro, como o Throw Error ou Assert, seja utilizado dentro do subpipeline em onProcess ou um erro ocorra, então o Retry será finalizado e o erro será propagado para o pipeline. Além disso, sempre que a propriedade "success" for definida com valor true no último passo do subpipeline em onException, a execução do componente Retry também será concluída, independentemente da propriedade Fail on Error estar ativa.

Respondeu à sua pergunta?