🧐 O que é? Qual o uso?
O Apache Kafka é uma plataforma de mensageria distribuída, open source, projetada para alta capacidade de envio e processamento de mensagens. Possui alta tolerância a falhas e é utilizada por grandes empresas que enfrentam desafios com grandes volumes de dados.
🛠️ Exemplo: Criando uma aplicação Spring Boot com Spring Kafka
Veja um passo a passo básico para criar uma aplicação simples usando Spring Boot e Spring Kafka:
1️⃣ Adicione as dependências no build.gradle
:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.kafka:spring-kafka'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
2️⃣ Configure o Kafka no application.yml
:
spring:
kafka:
bootstrap-servers: localhost:9092
consumer:
group-id: exemplo-grupo
auto-offset-reset: earliest
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
Explicação das propriedades:
bootstrap-servers
: Endereço do(s) servidor(es) Kafka a serem conectados.consumer.group-id
: Identifica o grupo de consumidores (permite balanceamento de carga).consumer.auto-offset-reset
: Define o que fazer se não houver offset salvo (ex: “earliest” começa do início).consumer.key-deserializer
econsumer.value-deserializer
: Classes responsáveis por transformar os bytes recebidos em objetos Java.producer.key-serializer
eproducer.value-serializer
: Classes responsáveis por transformar objetos Java em bytes para envio
3️⃣ Exemplo de Producer (publicador):
// ProducerService.java
@Service
public class ProducerService {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
public void sendMessage(String topic, String message) {
kafkaTemplate.send(topic, message);
}
}
Este é um exemplo de Produtor, que envia mensagens para um tópico Kafka. O KafkaTemplate
é usado para enviar mensagens de forma assíncrona.
4️⃣ Exemplo de Consumer (assinante):
// ConsumerService.java
@Service
public class ConsumerService {
@KafkaListener(topics = "meu-topico", groupId = "exemplo-grupo")
public void listen(String message) {
System.out.println("Mensagem recebida: " + message);
}
}
Este é um exemplo de Consumidor, que escuta mensagens de um tópico específico. O método listen
será chamado sempre que uma nova mensagem for recebida.
Servidor Kafka
Para rodar o Kafka localmente, você pode usar o Docker. Lembre-se de iniciar o Kafka localmente antes de rodar a aplicação.
🔗 Mais informações
🎥 Vídeos
Para começar, vale assistir a este material do O Hipsters ponto Tube.
É um conteúdo compacto e muito interessante:
Para complementar, assista também ao vídeo do Código Fonte TV!
Ele tem 11 minutos e traz um resumo muito bem pensado sobre o Kafka: