Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Rafael Berçam
Rafael Berçam

Posted on

     

🧪 Validando Mensagens no Kafka com Kotlin e Awaitility

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 usandoKotlin,Awaitility e oKafkaConsumer. 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)
Enter fullscreen modeExit fullscreen mode

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>
Enter fullscreen modeExit fullscreen mode

🤔 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:

  1. Publica uma mensagem de uma transação bancária em um tópico Kafka.

  2. Consome a mensagem do tópico.

  3. Valida se o conteúdo recebido está correto.

🛠️ O Modelo de Transação

📬 O Teste com Kafka e Awaitility

🧐 Explicando o Teste

  1. Produzimos uma mensagem Kafka comkafkaProducer.sendMessage().

Tela do IntelliJ com teste executado com sucesso

  1. Consumimos comkafkaConsumer.poll().

  2. Usamos oawait().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. ✅

Tela do Docker com o tópico da transação feita pelo teste

📢 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

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Software Engineer, QA Engineer Specialist, Tech Lead
  • Location
    Belo Horizonte
  • Work
    QA Engineer Specialist at Zup Innovation
  • Joined

More fromRafael Berçam

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp