我有一个Kafka客户,我需要测试它的功能。为此,我需要在本地创建一个kafka集群,并连接到它。根据限制,我不能使用docker映像或k8s来执行此操作。
我做了一个搜索,发现这个类用于测试,但我不能更改代理端口。
我尝试使用debezium-kafkacluster,但它无法间歇性地创建集群,因此导致间歇性测试失败。
有没有办法在本地创建kafka集群,为基于java的kafka客户机运行集成测试?
我有一个Kafka客户,我需要测试它的功能。为此,我需要在本地创建一个kafka集群,并连接到它。根据限制,我不能使用docker映像或k8s来执行此操作。
我做了一个搜索,发现这个类用于测试,但我不能更改代理端口。
我尝试使用debezium-kafkacluster,但它无法间歇性地创建集群,因此导致间歇性测试失败。
有没有办法在本地创建kafka集群,为基于java的kafka客户机运行集成测试?
3条答案
按热度按时间lsmd5eda1#
我知道这听起来像是只给你一个链接,但我使用了testcontainer库做的很好。
除了给你一个指向文档的链接之外,没有什么特别的东西要添加:https://www.testcontainers.org/modules/kafka/
dhxwm5r42#
嗯,张贴的答案有帮助,但我想要一些不同的东西。最终创建了自己的实现。如果有人愿意,他们可以用。
我曾经
kafka.server.KafkaServer
以及org.apache.zookeeper.server.ZooKeeperServerMain
为了这个。ds97pgxw3#
我总是这样。一个kafka“集群”实际上至少是一个kafka服务器,至少是一个zookeeper服务器。它们都可以在您正在开发的同一个盒子上本地运行。当然,不建议在生产环境中使用只有一个kafka服务器和zookeeper节点的设置,因为没有冗余,但它非常适合端到端测试、调试等。
下面是我用来在本地运行上述程序的命令。我假设你下载了最新的Kafka合流包,并且在
bin
目录:我还需要在本地运行schema registry,因此我添加了以下内容:
请注意,所有命令都具有
nohup
在开始时,所有的输出都被发送到忽略/dev/null
. 如果您确实需要在控制台上查看日志输出,您可以删除它们,或者根据需要将其重定向到实际的日志文件。上面的好处是你可以把它们打包成一个脚本(确保添加一个
sleep 5
在每个命令之间等待上一个服务器联机,然后再转到下一个服务器),然后每次需要在本地运行集群时只需运行脚本。但是,请注意,稍后需要手动终止进程,即使用ps
,发布kill
指挥等。