创建kafka集群以测试基于java的kafka客户机

ufj5ltwl  于 2021-06-04  发布在  Kafka
关注(0)|答案(3)|浏览(448)

我有一个Kafka客户,我需要测试它的功能。为此,我需要在本地创建一个kafka集群,并连接到它。根据限制,我不能使用docker映像或k8s来执行此操作。
我做了一个搜索,发现这个类用于测试,但我不能更改代理端口。
我尝试使用debezium-kafkacluster,但它无法间歇性地创建集群,因此导致间歇性测试失败。
有没有办法在本地创建kafka集群,为基于java的kafka客户机运行集成测试?

lsmd5eda

lsmd5eda1#

我知道这听起来像是只给你一个链接,但我使用了testcontainer库做的很好。
除了给你一个指向文档的链接之外,没有什么特别的东西要添加:https://www.testcontainers.org/modules/kafka/

dhxwm5r4

dhxwm5r42#

嗯,张贴的答案有帮助,但我想要一些不同的东西。最终创建了自己的实现。如果有人愿意,他们可以用。
我曾经 kafka.server.KafkaServer 以及 org.apache.zookeeper.server.ZooKeeperServerMain 为了这个。

ds97pgxw

ds97pgxw3#

我总是这样。一个kafka“集群”实际上至少是一个kafka服务器,至少是一个zookeeper服务器。它们都可以在您正在开发的同一个盒子上本地运行。当然,不建议在生产环境中使用只有一个kafka服务器和zookeeper节点的设置,因为没有冗余,但它非常适合端到端测试、调试等。
下面是我用来在本地运行上述程序的命令。我假设你下载了最新的Kafka合流包,并且在 bin 目录:

nohup ./zookeeper-server-start ../etc/kafka/zookeeper.properties > /dev/null 2>&1 &
nohup ./kafka-server-start ../etc/kafka/server-original.properties > /dev/null 2>&1 &

我还需要在本地运行schema registry,因此我添加了以下内容:

nohup ./schema-registry-start ../etc/schema-registry/schema-registry.properties >/dev/null 2>&1 &

请注意,所有命令都具有 nohup 在开始时,所有的输出都被发送到忽略 /dev/null . 如果您确实需要在控制台上查看日志输出,您可以删除它们,或者根据需要将其重定向到实际的日志文件。
上面的好处是你可以把它们打包成一个脚本(确保添加一个 sleep 5 在每个命令之间等待上一个服务器联机,然后再转到下一个服务器),然后每次需要在本地运行集群时只需运行脚本。但是,请注意,稍后需要手动终止进程,即使用 ps ,发布 kill 指挥等。

相关问题