Evitando loops e maximizando a eficiência dos pipelines
Saiba como controlar os saltos de eventos e mensagens nos pipelines para garantir eficiência e prevenir loops que impactam o desempenho.
Entendendo o conceito de “salto”
Um “salto” ocorre quando um evento é acionado entre diferentes pipelines ou dentro do mesmo pipeline. A Digibee Integration Platform rastreia o número de vezes que um evento é acionado, permitindo um máximo de 25 saltos no ciclo de vida do evento.
Exemplos práticos
Cenário 1: Excesso de saltos entre dois pipelines
Para entender melhor como os saltos funcionam, considere o seguinte cenário:
O Pipeline A publica um evento com o ID “123” para o Pipeline B.
Quando o evento 123 é publicado no Pipeline B, ocorre o primeiro salto, restando 24 saltos disponíveis.
O Pipeline B está configurado para acionar 30 vezes por evento.
Essa operação não será possível porque o evento 123 tem apenas 24 saltos restantes, tornando impossível completar os 30 acionamentos.
Cenário 2: Excesso de saltos em uma cadeia de pipelines
Embora loops infinitos que esgotam o ciclo de vida de eventos sejam raros (já que os pipelines tendem a se autoacionar menos vezes), eles são mais prováveis em cenários com cadeias longas de pipelines, onde cada um aciona o próximo.
Veja um exemplo para ilustrar:
O Pipeline A publica o evento 123 no Pipeline B, consumindo o primeiro salto e restando 24 saltos.
O Pipeline B está configurado para acionar 15 vezes por evento, deixando 9 saltos restantes após o processamento.
O Pipeline B então aciona o Pipeline C, consumindo mais um salto e restando 8 saltos.
O Pipeline C está configurado para acionar 15 vezes por evento.
Nesse caso, o evento 123 não conseguirá completar todos os 15 acionamentos no Pipeline C, pois apenas 8 saltos estão disponíveis. O limite de ciclo de vida de 25 saltos é insuficiente para os 32 saltos necessários nessa cadeia de pipelines.
Gerenciando o controle de saltos
Mesmo em execuções paralelas, o ciclo de vida do evento é rastreado. Essa contagem de saltos se aplica a mensagens geradas tanto pelos conectores Event Publisher quanto Pipeline Executor.
Os exemplos discutidos aqui não representam loops infinitos. Eles assumem que os pipelines são projetados com mecanismos de proteção para evitar autoacionamentos ilimitados. Sem esses controles, poderia ocorrer um loop infinito, no qual o pipeline se aciona continuamente, impactando negativamente o desempenho do sistema. Implementar esses controles é essencial para gerenciar o ciclo de vida dos eventos, evitar loops e garantir a estabilidade do sistema.
Atualizado