For the complete documentation index, see llms.txt. This page is also available as Markdown.

Timeout no conector Pipeline Executor

Saiba por que uma chamada síncrona do conector Pipeline Executor pode sofrer timeout mesmo quando o pipeline chamado é executado com sucesso, e como corrigir isso.

Por que o timeout ocorre?

Em uma chamada síncrona do conector Pipeline Executor, o pipeline de origem espera o pipeline de destino concluir e retornar uma resposta antes de continuar.

O valor de Timeout não mede apenas quanto tempo o pipeline de destino leva para processar a mensagem. Ele mede todo o ciclo:

  1. O pipeline de origem envia a mensagem.

  2. A mensagem espera na fila do pipeline de destino.

  3. O pipeline de destino processa a mensagem.

  4. A resposta volta para a fila do pipeline de origem.

  5. O pipeline de origem recebe a resposta e continua.

O tempo de fila conta para o timeout nos dois sentidos. Quando o pipeline de destino recebe um alto volume de execuções, as mensagens esperam mais tempo na fila, e a resposta pode levar mais tempo para chegar ao pipeline de origem do que o timeout configurado permite, mesmo que o próprio pipeline de destino termine o processamento a tempo. Quando isso acontece, o pipeline de destino retorna um erro de timeout para o pipeline de origem.

Mesmo que o pipeline de destino responda em menos de um segundo, o pipeline de origem ainda pode sofrer timeout se os atrasos na fila fizerem o ciclo completo durar mais do que o valor configurado em Timeout.

Isso geralmente acontece quando o número de chamadas excede a capacidade de processamento do pipeline de destino, e resulta em um erro como este:

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[…-…]

Causas comuns

Verifique se os seus pipelines se encaixam em um destes cenários:

Cenário
O que acontece

O pipeline de origem é implantado com mais execuções concorrentes do que o pipeline de destino.

O pipeline de origem consegue enviar mais requisições do que o pipeline de destino consegue processar, então as requisições ficam em fila no lado do destino.

O pipeline de destino é acionado por múltiplos fluxos ao mesmo tempo.

As requisições combinadas excedem as execuções concorrentes permitidas na implantação do pipeline de destino.

Cada tipo de implantação (deploy) permite um número máximo diferente de execuções concorrentes:

Tipo de implantação
Máximo de execuções concorrentes

Small

10

Medium

20

Large

40

Uma incompatibilidade entre o tipo de implantação do pipeline de origem e do pipeline de destino é uma causa comum desse erro. Fique atento a combinações como estas:

Pipeline de origem
Pipeline de destino

Medium

Small

Large

Medium

Large

Small

Solução

Aplique uma destas correções:

  • Aumente o número de execuções concorrentes do pipeline de destino para que ele consiga lidar com mais requisições. Isso pode exigir o aumento do número de réplicas.

  • Se a operação puder ser assíncrona, altere-a para ASYNC, ou use uma chamada baseada em eventos para que o gerenciador de filas controle o tráfego para o pipeline de destino.

Para saber mais sobre como o timeout do Pipeline Executor funciona, leia Pipeline Executor.

Atualizado

Isto foi útil?