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:
Enviar o JSON completo para o Pipeline B incluiria dados desnecessários. Em vez disso, use um conector Transformer (JOLT), JSON Generator, ou Event para processar o JSON e garantir que somente as informações essenciais de “produtos” sejam enviadas.
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:
Conector Validator: Use um JSON Schema para definir precisamente o JSON esperado pelo consumer.
Conector Choice: Use JSONPath para validar elementos específicos na mensagem recebida. Por exemplo, expressões como
$.produtos
or$.produtos[?(@.codigo && @.nome)]
garantem que somente dados válidos sejam processados.
Caso essas condições não sejam atendidas, um fluxo de erro será acionado, interrompendo o processo devido ao descumprimento do contrato especificado.
Atualizado