我正在寻找有关如何在开发人员和集成测试环境中设置和运行apachekafka的建议和指针。
我希望避免在每个开发人员的机器上手动下载和设置整个包,并且在进行集成测试时找到一种自动启动节点的简单方法。
是否有某种用于开发/集成测试目的的嵌入式kafka(想想h2 parallel,java开发人员希望避免使用成熟的rdbms)?
我必须求助于某种流浪的解决办法吗?顺便说一下,我发现了以下有趣的要点:https://gist.github.com/svanellewee/8d978db827a860186569 但它需要设置流浪+虚拟箱。。。
2条答案
按热度按时间bq9c1y661#
我认为Kafka是最接近h2的。你可以在这里找到它(https://github.com/chbatey/kafka-unit). 或者直接使用via
适用于在一个jvm中进行单元/集成测试,类似于curatortestingserver。
dnph8jn42#
是否有某种嵌入式kafka用于开发/集成测试目的
kafka实际上包含了一些测试设施,可以让您运行嵌入式kafka集群以及单元测试设施(从2017年kafka v0.10.2.0开始)。参见以下文档:https://kafka.apache.org/documentation/streams/developer-guide/testing.html
例如,您可以通过以下方式将相关maven构件添加到您的构建中:
文档可从以下网址获得:https://kafka.apache.org/documentation/streams/developer-guide/testing.html
以下指针将有助于编写测试:
https://github.com/confluentinc/kafka-streams-examples --
kafka-streams
子文件夹包括许多端到端集成测试,这些测试可以启动嵌入式kafka集群,在某些情况下还可以启动合流模式注册表。这些应该是你自己测试的一个很好的起点。https://github.com/apache/kafka/tree/trunk/streams/src/test/java/org/apache/kafka/streams/integration/utils --与上一链接中的测试设施类似,但包含的示例较少
我希望避免在每个开发人员的机器上手动下载和设置整个包,并且在进行集成测试时找到一种自动启动节点的简单方法。
如果满足了您的需求,那么上述方法可能是最简单的,因为它与maven、gradle或sbt等工具很好地融合到现有的开发/测试过程中。
但是,如果您需要执行更高级的测试(例如,在中途故意关闭kafka代理以验证您的应用程序是否能够在部分中断中生存),您可能需要看一下:
https://github.com/apache/kafka/tree/trunk/tests (系统和集成测试,使用docker等)
https://github.com/apache/kafka/tree/trunk/vagrant
https://github.com/confluentinc/ducktape