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.