# Retry

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

## Parâmetros

Dê uma olhada nos parâmetros de configuração do componente. Parâmetros suportados por [expressões *Double Braces*](/documentation/connectors-and-triggers/pt-br/double-braces/overview.md) estão marcados com `(DB)`.

<table data-full-width="true"><thead><tr><th>Parâmetro</th><th width="296">Descrição</th><th>Valor padrão</th><th>Tipo de dado</th></tr></thead><tbody><tr><td><strong>Maximum Number of Retries</strong></td><td>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.</td><td>3</td><td>Inteiro</td></tr><tr><td><strong>Timeout Of The Whole Retry Operation</strong></td><td>Duração máxima da soma de todas as tentativas, incluindo a primeira (em milissegundos).</td><td>30000</td><td>Inteiro</td></tr><tr><td><strong>Fail On Error</strong></td><td>se a opção for ativada, a execução do <em>Retry</em> 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 <em>pipeline</em> continua, mas o resultado da última tentativa será entregue ao próximo componente.</td><td><em>False</em></td><td>Booleano</td></tr></tbody></table>

## Definindo o subpipeline que é executado a cada tentativa <a href="#h_4da0771299" id="h_4da0771299"></a>

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.

Para entender melhor o funcionamento de *subpipelines*, leia a [documentação *Subpipelines*](/documentation/developer-guide/pt-br/development-cycle/build-overview/pipelines/subpipelines.md).

{% hint style="warning" %}
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).
{% endhint %}

### Informando sucesso para uma execução do componente Retry <a href="#h_9121c6196f" id="h_9121c6196f"></a>

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.

## Fluxo de mensagens <a href="#h_81aedec92e" id="h_81aedec92e"></a>

### Entrada <a href="#h_8d4b07ca16" id="h_8d4b07ca16"></a>

Qualquer estrutura é aceita.

### Saída <a href="#h_04df5cd8db" id="h_04df5cd8db"></a>

Mensagem de saída do último passo processado.

## Tratamento de Erros <a href="#h_a3bc434e27" id="h_a3bc434e27"></a>

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 <a href="#h_a1cba176b1" id="h_a1cba176b1"></a>

### Propriedade Fail on Error habilitada e nenhum subpipeline definido em onException <a href="#h_200edda8f2" id="h_200edda8f2"></a>

* 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 <a href="#h_389b2ed99a" id="h_389b2ed99a"></a>

* 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 <a href="#h_a006162471" id="h_a006162471"></a>

* 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 <a href="#h_aad3137ee2" id="h_aad3137ee2"></a>

* 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***.*

{% hint style="warning" %}
Caso um componente de erro (como 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.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digibee.com/documentation/connectors-and-triggers/pt-br/connectors/logic/retry.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
