🔧 🧪 Validando Mensagens no Kafka com Kotlin e Awaitility
Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to
Fala pessoal! Neste post, vou te guiar por um exemplo prático de como testar a publicação de mensagens em um tópico Kafka usando Kotlin
, Awaitility
e o KafkaConsumer
. Esse tipo de validação é essencial em sistemas distribuídos para garantir que as mensagens sejam enviadas e recebidas corretamente.
📚 Estrutura do Projeto
A estrutura básica do projeto é assim:
.
├── src
│ ├── main
│ │ └── kotlin
│ │ └── api
│ │ └── KafkaProducerService.kt
│ └── test
│ └── kotlin
│ └── api
│ └── KafkaApiTest.kt
└── pom.xml (ou build.gradle.kts para Kotlin)
Certifique-se de incluir as seguintes dependências no seu pom.xml (Maven) ou build.gradle.kts (Gradle):
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.7.0</version>
</dependency>
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>2.16.0</version>
</dependency>
🤔 O Que é o Awaitility?
O Awaitility é uma biblioteca Java/Kotlin projetada para facilitar a espera por condições assíncronas em testes. Em vez de usar Thread.sleep() (o que é ineficiente), o Awaitility permite esperar de forma mais inteligente até que uma condição seja atendida.
✅ Por que usar Awaitility com Kafka?
Os consumidores Kafka não recebem mensagens imediatamente (processamento assíncrono).
Precisamos esperar até que a mensagem seja publicada no tópico e lida pelo consumidor.
📊 Exemplo Prático: Validando Transações Bancárias
Vamos criar um teste que:
Publica uma mensagem de uma transação bancária em um tópico Kafka.
Consome a mensagem do tópico.
Valida se o conteúdo recebido está correto.
🛠️ O Modelo de Transação
📬 O Teste com Kafka e Awaitility
🧐 Explicando o Teste
- Produzimos uma mensagem Kafka com
kafkaProducer.sendMessage()
.
Consumimos com
kafkaConsumer.poll()
.Usamos o
await().untilAsserted
para esperar até a mensagem ser validada.
Se a mensagem não for encontrada ou os dados estiverem incorretos, o teste falha com uma mensagem de erro clara. ✅
📢 Conclusão
Testar mensagens Kafka de forma assíncrona é essencial para garantir a integridade do sistema. Usando o Awaitility com KafkaConsumer, conseguimos validar mensagens de forma eficiente.
Se você gostou do conteúdo ou tem dúvidas, deixe um comentário! 🚀
👉 Me siga no dev.to para mais conteúdo de qualidade!
Happy coding! 💻
🔗 Links Referencias e Projeto no GitHub
...
🔧 NestJS - Validando o envio de arquivos
📈 27.43 Punkte
🔧 Programmierung
🔧 Validando input file e select com Yup
📈 27.43 Punkte
🔧 Programmierung
🔧 [PT-BR] Escrevendo Boas Mensagens de Commit
📈 25.45 Punkte
🔧 Programmierung
🔧 Formas simples de escrever mensagens de git
📈 25.45 Punkte
🔧 Programmierung
🔧 Interceptando mensagens de erro com o nginx
📈 25.45 Punkte
🔧 Programmierung
🎥 Kotlin: Using Room Kotlin APIs - MAD Skills
📈 24.16 Punkte
🎥 Video | Youtube