Boas práticas ao validar mensagens em um pipeline consumer
Conheça as melhores práticas para transferir mensagens entre processos e validar mensagens recebidas por um consumer.
Ao gerenciar integrações que exigem segregação, dividir a integração em múltiplos pipelines pode melhorar a clareza e eficiência. A seguir, veja um exemplo de cenário e algumas práticas recomendadas.
Cenário de exemplo: Processamento de pedidos de pagamento em um e-commerce
Imagine uma integração que processa pedidos de um e-commerce. Para gerenciar eficientemente um grande volume de pedidos, você decide dividir a integração em dois pipelines:
Pipeline A: Recupera os pedidos de uma API.
Pipeline B (consumer): Recebe os dados dos produtos extraídos dos pedidos e os envia para outra API.
Para integrar processos que demandam segregação, use Eventos para delegar tarefas específicas a outro pipeline (o consumer).
Nesse contexto, é essencial:
Definir precisamente os dados que o consumidor receberá.
Estabelecer um contrato claro entre os processos.
Isso assegura que a mensagem transmitida seja precisa, concisa e válida, facilitando a comunicação e reduzindo possíveis erros entre os dois processos.
No Pipeline A, a API de pedidos retorna o seguinte JSON:
Contudo, para o Pipeline B, apenas o array de "produtos" é necessário:
Por que evitar o envio de payloads JSON completos?
Enviar o JSON completo pode sobrecarregar o Pipeline B com dados irrelevantes, possivelmente incluindo centenas de linhas, quando apenas uma fração é necessária. Limitar a transferência de dados às informações essenciais melhora a eficiência, independemente do volume de dados.
Outros benefícios incluem:
Logs de execução: Mensagens menores resultam em logs mais claros e fáceis de gerenciar.
Manutenção: Dados simplificados facilitam a resolução de problemas e atualizações, especialmente quando pessoas diferentes estão envolvidas em manter a integração.
Para uma validação de dados robusta, o Pipeline B pode usar:
Caso essas condições não sejam atendidas, um fluxo de erro será acionado, interrompendo o processo devido ao descumprimento do contrato especificado.
Isto foi útil?