Pular para o conteúdo principal

Pergunta 9 de 50

O que é um Producer?

PlenoSênior

Pergunta

"O que é um Producer no Kafka e o que ele precisa decidir ao publicar uma mensagem?"

O que o entrevistador quer avaliar

Conhecimento básico de arquitetura — geralmente pergunta de aquecimento antes de ir para tópicos mais profundos como escolha de key e garantias de entrega.

Resposta rápida

Producer é a aplicação que publica eventos em um tópico Kafka. Ao enviar uma mensagem, ele decide para qual tópico enviar, qual key usar (que determina a partition de destino) e como serializar o valor — geralmente JSON, Avro ou Protobuf. O producer não sabe, e não precisa saber, quem vai consumir esse evento.

Resposta nível Sênior

Um Producer é qualquer aplicação — tipicamente um microsserviço — que publica um fato de negócio como evento em um tópico. Três decisões cabem ao producer em cada envio: o tópico de destino, a key da mensagem (que determina em qual partition ela será armazenada, e portanto sua ordenação relativa a outras mensagens com a mesma key) e o formato de serialização do valor. Em Spring Boot, isso se traduz em uma chamada a KafkaTemplate.send(topic, key, value). Um ponto que costuma escapar: o producer também decide (via configuração) o nível de garantia de entrega que quer — acks=0, 1 ou all — trade-off entre latência e durabilidade que volta no Capítulo 10, sobre garantias de entrega.

Explicação aprofundada

Veja "Producer" no Capítulo 3 e, para a decisão de key, o Capítulo 4 sobre partitions e ordenação.

Exemplo financeiro

O serviço de autorização de cartão, ao aprovar uma compra, atua como producer publicando o evento CompraAutorizada no tópico compras.autorizadas, usando o cartaoId como key — garantindo que todas as compras do mesmo cartão fiquem ordenadas na mesma partition.

"O producer sabe quais consumidores vão processar a mensagem"

Não — esse é justamente o ponto de desacoplamento do Kafka. O producer publica no tópico sem qualquer conhecimento de quantos Consumer Groups existem ou o que cada um faz com o evento.

Pode vir a seguir

Espere: "um producer pode ser um microsserviço?" (próxima pergunta) e "o que acontece se o producer não especificar uma key?".

Capítulos relacionados