我正在寻找有关如何在开发人员和设备上设置和运行Apache Kafka的建议和指示。集成测试环境。
我希望避免在每个开发人员手动下载和设置整个软件包。在集成测试时,还可以找到一种自动启动节点的简便方法。
是否存在用于开发/集成测试目的的某种嵌入式Kafka(想想想要避免成熟的RDBMS的Java开发人员的H2并行)?
我是否必须采用某种流浪汉解决方案?顺便说一下,我找到了以下有趣的Gist:https://gist.github.com/svanellewee/8d978db827a860186569但它需要设置Vagrant + VirtualBox ......
答案 0 :(得分:2)
我认为KafkaUnit是最接近H2的地方。你可以在这里找到它(https://github.com/chbatey/kafka-unit)。 或者只使用通过
<dependency>
<groupId>info.batey.kafka</groupId>
<artifactId>kafka-unit</artifactId>
<version>0.6</version>
</dependency>
适用于单元/集成测试所有在一个JVM中,类似于Curator Testingserver。
答案 1 :(得分:2)
是否存在用于开发/集成测试目的的某种嵌入式Kafka
Kafka实际上包括测试工具,可以让您运行嵌入式Kafka集群以及单元测试工具(从2017年开始使用Kafka v0.10.2.0)。请参阅以下文档: https://kafka.apache.org/documentation/streams/developer-guide/testing.html
例如,您可以通过以下方式将相关的maven工件添加到构建中:
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams-test-utils</artifactId>
<!-- Replace with desired Kafka version. -->
<version>2.2.0</version>
<scope>test</scope>
</dependency>
文档位于: https://kafka.apache.org/documentation/streams/developer-guide/testing.html
以下指针将有助于编写测试:
kafka-streams
子文件夹包含许多端到端集成测试,这些测试可以扩展嵌入式Kafka集群以及某些情况下Confluent schema registry。这些应该是您自己测试的良好起点。我希望避免在每个开发人员手动下载和设置整个软件包。在集成测试时,还可以找到一种自动启动节点的简便方法。
如果满足您的需求,上述内容可能是最简单的,因为它可以与maven,gradle或sbt等工具很好地融合到现有的开发/测试过程中。
但是,如果您需要执行更高级的测试 - 例如故意在中途取消Kafka经纪人以验证您的应用程序在部分中断后仍然存在 - 您可能需要查看: