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:
- Enviar mensagens: Recebe dados e os envia para o tópico especificado.
- Serialização: Converte os dados da mensagem em bytes antes de enviá-los.
- 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.
- Bufferização: As mensagens são temporariamente armazenadas em um buffer antes de serem enviadas em lote, aumentando a capacidade de throughput.
- 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