Sobes.tech
Junior

O que é um produtor no Apache Kafka?

sobes.tech IA

Resposta da IA

Um produtor no Apache Kafka é uma aplicação cliente que publica mensagens nos brokers Kafka.

Funções principais:

  1. Enviar mensagens: Recebe dados e os envia para o tópico especificado.
  2. Serialização: Converte os dados da mensagem em bytes antes de enviá-los.
  3. Particionamento: Determina para qual partição do tópico a mensagem será enviada. Por padrão, é usado o hash da chave da mensagem. Se não houver chave, é usado round-robin ou particionamento sticky.
  4. Bufferização: As mensagens são temporariamente armazenadas em um buffer antes de serem enviadas em lote, aumentando a capacidade de throughput.
  5. Tratamento de erros: Cuida de tentativas de reenvio em caso de falhas temporárias ou erros do broker.

Configurações importantes:

  • bootstrap.servers: Lista de hosts e portas dos brokers para conexão inicial.
  • key.serializer: Classe para serializar a chave da mensagem.
  • value.serializer: Classe para serializar o valor da mensagem.
  • acks: Nível de confirmação de recebimento de mensagens pelos brokers (0, 1, all).
  • retries: Número de tentativas de reenvio da mensagem.
// Exemplo de envio de mensagem ao Kafka usando a API Producer em Java
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092"); // Endereço do broker
props.put("acks", "all"); // Requer confirmação de todas as réplicas
props.put("retries", 0); // Sem tentativas adicionais
props.put("linger.ms", 1); // Enviar mensagens imediatamente
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Serializador de chave
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // Serializador de valor

Producer<String, String> producer = new KafkaProducer<>(props);
for (int i = 0; i < 100; i++) {
    producer.send(new ProducerRecord<String, String>("my-topic", Integer.toString(i), Integer.toString(i))); // Envio de mensagem
}

producer.close(); // Fechamento do produtor