Anatomia de uma mensagem
Tudo o que trafega entre um Input, um Transform e um Output é uma mensagem. Ela tem três partes, e é o mesmo formato do começo ao fim da pipeline.
| Parte | O que é |
|---|---|
| Value | O conteúdo em si — o corpo da mensagem |
| Key | Uma chave que identifica o registro |
| Headers | Pares nome/valor com informação sobre a mensagem, não o conteúdo dela |
Value
O conteúdo. É o que a maioria dos Outputs grava.
A plataforma não valida nem reformata o Value: o que o Input coloca ali é o que o Output recebe. O formato — JSON, texto puro, XML — é combinado entre as duas pontas.
Uma mensagem pode ter Value vazio. Isso não é erro: é o que acontece, por exemplo, quando um registro é apagado na origem e só a identificação dele importa.
Key
A Key identifica o registro que a mensagem representa.
Ela é também o que define a ordem: o Kafka garante ordem por partição, e a partição é escolhida pela Key. Mensagens com a mesma Key sempre chegam na ordem em que foram publicadas. Mensagens sem Key são espalhadas entre as partições, sem garantia de ordem entre si.
Headers
Informação sobre a mensagem — de onde veio, o que ela representa, como deve ser tratada.
Quem preenche e quem lê
Cada peça define o que faz com essas três partes, e isso está documentado na página de cada uma:
- Inputs — cada página tem a seção "O que este Input escreve no tópico", com um exemplo da mensagem gerada.
- Transform — recebe as três partes e decide o que devolver.
- Outputs — cada página tem a seção "O que este Output precisa ler do tópico", com um exemplo da mensagem esperada.
A visão geral dos Outputs traz a tabela de compatibilidade: quais deles aceitam qualquer mensagem e quais exigem um formato específico. É a página para consultar antes de ligar um Input a um Output pela primeira vez.