Python:如何模拟单元测试的kafka主题?

use*_*296 6 python unit-testing apache-kafka kafka-python

我们有一个消息调度程序,它在使用密钥将它放在Kafka主题队列之前,从消息属性生成一个散列键.

这样做是为了重复数据删除的目的.但是,我不确定如何在不实际设置本地群集并检查其是否按预期执行的情况下测试此重复数据删除.

在线搜索用于模拟Kafka主题队列的工具没有帮助,我担心我可能会以错误的方式思考这个问题.

最终,无论用于模拟Kafka队列,都应该采用与本地集群相同的方式 - 即提供对主题队列的Key插入的去重复删除.

有没有这样的工具?

dm0*_*514 4

如果您需要验证 Kafka 特定功能,或使用 Kafka 特定功能实现,那么唯一的方法就是使用 Kafka!

Kafka对其去重逻辑有测试吗?如果是这样,以下组合可能足以减轻您的组织所感知的失败风险:

  • 哈希逻辑的单元测试(确保同一对象确实生成相同的哈希)
  • Kafka 主题重复数据删除测试(Kafka 项目内部)
  • 飞行前烟雾测试验证您的应用程序与 Kafka 的集成

如果 Kafka 没有围绕其主题重复数据删除进行任何类型的测试,或者您担心重大更改,那么围绕 Kafka 特定功能进行自动检查非常重要。这可以通过集成测试来完成。我最近在基于 Docker 的集成测试管道方面取得了很大成功。在创建 Kafka Docker 镜像(社区可能已经提供了一个)的初始跑腿工作之后,设置集成测试管道就变得微不足道了。管道可能如下所示:

  • 执行基于应用程序的单元测试(哈希逻辑)
  • 一旦这些通过,你的 CI 服务器就会启动 Kafka
  • 执行集成测试,验证重复写入仅向主题发出一条消息。

我认为重要的是确保 Kafka 集成测试最小化,只包括绝对依赖于 Kafka 特定功能的测试。即使使用 docker-compose,它们也可能比单元测试慢几个数量级,大约 1 毫秒 vs 1 秒?另一件需要考虑的事情是,维护集成管道的开销可能值得冒着信任 Kakfa 将提供其声称的主题重复数据删除的风险。