Passar para o conteúdo principal
Todas as coleçõesComponentes
Lidando com Timeout no componente Pipeline Executor
Lidando com Timeout no componente Pipeline Executor

Evite esse erro comum em requisições síncronas

Aline Rodrigues avatar
Escrito por Aline Rodrigues
Atualizado há mais de uma semana

Algumas combinações de configurações de pipeline e deployment podem acarretar problemas, ainda que não estejam necessariamente incorretas. Um caso recorrente diz respeito ao uso do conector pipeline executor com operação síncrona, onde um fluxo principal dispara outro e aguarda a sua finalização e resposta para então prosseguir com o restante dos seus passos.

Esse caso requer atenção especial, pois pode haver um "descasamento" na comunicação entre os dois pipelines dependendo das configurações de deployment de ambos, principalmente quando há um alto volume de execuções, causando o seguinte erro:

The message could not be sent to the specified pipeline. Error org.apache.camel.ExchangeTimedOutException: The OUT message was not received within: 20000 millis due reply message with correlationID: Camel-…-… not received on destination: amq.gen-…. Exchange[…-…]

(Timeout do Pipeline Executor)

Ainda que o pipeline de destino execute em tempo hábil, ele retorna esse erro ao pipeline de origem, como se tivesse estourado o timeout configurado no componente pipeline executor. Isso ocorre quando há uma vazão de chamadas muito maior do que o pipeline de destino poderia consumir.

Cenários de alerta e como solucionar

Ao se deparar com o erro acima, verifique se os fluxos envolvidos se encaixam em um dos seguintes cenários:

  • Deployment do pipeline de origem com mais execuções concorrentes do que o do pipeline de destino;

  • Pipeline de destino disparado por diversos fluxos ao mesmo tempo, acarretando um número de requisições superior ao de execuções concorrentes do seu deployment.

Para corrigir o problema, certifique-se de aumentar o número de execuções concorrentes do pipeline de destino para conferir maior capacidade de atendimento (isso também poderá exigir aumento do número de réplicas). Caso a operação não precise ser necessariamente síncrona, então pode-se alterá-la para assíncrona ou até considerar alterar a chamada para evento, permitindo que o gerenciador de filas controle o tráfego no pipeline de destino.

Respondeu à sua pergunta?