Trabalhando com Kafka em Kotlin: bibliotecas e exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com Kafka em Kotlin: visão geral das bibliotecas e exemplos práticos



Apache Kafka é uma plataforma distribuída para processamento de fluxo de dados, que se tornou o padrão de facto na arquitetura de microsserviços. Kotlin, sendo uma linguagem JVM moderna, é totalmente compatível com o ecossistema Java, permitindo o uso de todas as bibliotecas populares para Kafka. Neste artigo, abordaremos três abordagens principais: o cliente Java oficial do Kafka, o Spring Kafka e a biblioteca leve Kafkakit. Todos os exemplos são escritos em Kotlin.



1. Cliente Kafka Oficial (Cliente Java)



A biblioteca kafka-clients da Apache é a base sobre a qual todas as outras abstrações são construídas. Ela fornece uma API de baixo nível para produtores e consumidores. Para Kotlin, basta adicionar a dependência no build.gradle.kts:



implementation("org.apache.kafka:kafka-clients:3.6.0")


Exemplo de produtor em Kotlin



import org.apache.kafka.clients.producer.KafkaProducerimport org.apache.kafka.clients.producer.ProducerRecordimport java.util.Properties

fun createProducer(): KafkaProducer<String, String> { val props = Properties().apply { put("bootstrap.servers", "localhost:9092") put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer") put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer") } return KafkaProducer(props)}

fun main() { val producer = createProducer() val record = ProducerRecord("my-topic", "key1", "Hello from Kotlin!") producer.send(record) { metadata, exception -> if (exception != null) { println("Erro ao enviar: ${exception.message}") } else { println("Enviado para partition ${metadata.partition()} offset ${metadata.offset()}") } } producer.close()}


Exemplo de consumidor em Kotlin



import org.apache.kafka.clients.consumer.ConsumerRecordsimport org.apache.kafka.clients.consumer.KafkaConsumerimport java.time.Durationimport java.util.Properties

fun createConsumer(): KafkaConsumer<String, String> { val props = Properties().apply { put("bootstrap.servers", "localhost:9092") put("group.id", "kotlin-group") put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer") put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer") put("auto.offset.reset", "earliest") } return KafkaConsumer(props)}

fun main() { val consumer = createConsumer() consumer.subscribe(listOf("my-topic"))

while (true) { val records: ConsumerRecords<String, String> = consumer.poll(Duration.ofMillis(100)) records.forEach { record -> println("Recebido: key=${record.key()}, value=${record.value()}, offset=${record.offset()}") } }}


2. Spring Kafka com Kotlin



Se você está usando Spring Boot, o Spring Kafka é a escolha natural. Ele fornece uma abordagem declarativa por meio de anotações e configuração automática. Adicione a dependência:



implementation("org.springframework.kafka:spring-kafka")


Configuração no application.yml



spring:  kafka:    bootstrap-servers: localhost:9092    producer:      key-serializer: org.apache.kafka.common.serialization.StringSerializer      value-serializer: org.apache.kafka.common.serialization.StringSerializer    consumer:      group-id: spring-kotlin-group      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer      auto-offset-reset: earliest


Produtor com KafkaTemplate



import org.springfram                    

Recommendations