创建Kafka集群以测试基于Java的Kafka客户端

创建Kafka集群以测试基于Java的Kafka客户端,java,testing,apache-kafka,integration-testing,kafka-cluster,Java,Testing,Apache Kafka,Integration Testing,Kafka Cluster,我有一个卡夫卡客户端,我需要测试它的功能。为此,我需要在本地创建一个Kafka集群,并连接到它。根据限制,我不能使用Docker图像或K8s来进行此操作 我做了一个搜索,发现在测试中使用了,但我不能更改代理端口 我尝试使用,但它无法间歇性地创建集群,因此导致间歇性测试失败 有没有一种方法可以在本地创建Kafka集群,为基于java的Kafka客户端运行集成测试?我知道这听起来好像只是给了您一个链接,但我使用了testcontainer库,这项工作做得很好 没有什么特别要添加的,除了给你一个指向文

我有一个卡夫卡客户端,我需要测试它的功能。为此,我需要在本地创建一个Kafka集群,并连接到它。根据限制,我不能使用Docker图像或K8s来进行此操作

我做了一个搜索,发现在测试中使用了,但我不能更改代理端口

我尝试使用,但它无法间歇性地创建集群,因此导致间歇性测试失败


有没有一种方法可以在本地创建Kafka集群,为基于java的Kafka客户端运行集成测试?

我知道这听起来好像只是给了您一个链接,但我使用了testcontainer库,这项工作做得很好

没有什么特别要添加的,除了给你一个指向文档的链接:

我知道这听起来好像只是给了你一个链接,但我使用了testcontainer库,它可以很好地完成这项工作

没有什么特别要添加的,除了给你一个指向文档的链接:

我一直都这样做。卡夫卡“集群”实际上只是至少一个卡夫卡服务器,以及至少一个Zookeeper服务器。它们都可以在您正在开发的同一个盒子上本地运行。当然,不建议在生产环境中使用只有一个kafka服务器和zookeeper节点的设置,因为它没有冗余,但它非常适合测试端到端、调试等

下面是我用来在本地运行上述程序的命令。我假设您下载了最新的Kafka confluent软件包,并且位于
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 &
我还需要在本地运行模式注册表,因此我添加了以下内容:

nohup ./schema-registry-start ../etc/schema-registry/schema-registry.properties >/dev/null 2>&1 &
请注意,所有命令的开头都有
nohup
,通过将其发送到
/dev/null
将忽略所有输出。如果确实需要在控制台上查看日志输出,则可以删除这些日志,或者根据需要将其重定向到实际日志文件


上面的好处是,您可以将它们打包成一个脚本(确保在每个命令之间添加一个
sleep 5
,以等待上一个服务器联机后再转到下一个服务器),然后您可以在每次需要在本地运行集群时简单地运行脚本。但是,请注意,稍后需要手动终止进程,即使用
ps
查找进程的pid号,发出
kill
命令,等等。

我一直都在这样做。卡夫卡“集群”实际上只是至少一个卡夫卡服务器,以及至少一个Zookeeper服务器。它们都可以在您正在开发的同一个盒子上本地运行。当然,不建议在生产环境中使用只有一个kafka服务器和zookeeper节点的设置,因为它没有冗余,但它非常适合测试端到端、调试等

下面是我用来在本地运行上述程序的命令。我假设您下载了最新的Kafka confluent软件包,并且位于
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 &
我还需要在本地运行模式注册表,因此我添加了以下内容:

nohup ./schema-registry-start ../etc/schema-registry/schema-registry.properties >/dev/null 2>&1 &
请注意,所有命令的开头都有
nohup
,通过将其发送到
/dev/null
将忽略所有输出。如果确实需要在控制台上查看日志输出,则可以删除这些日志,或者根据需要将其重定向到实际日志文件


上面的好处是,您可以将它们打包成一个脚本(确保在每个命令之间添加一个
sleep 5
,以等待上一个服务器联机后再转到下一个服务器),然后您可以在每次需要在本地运行集群时简单地运行脚本。但是,请注意,稍后您需要手动终止进程,即使用
ps
查找进程的pid号,发出
kill
命令,等等。

好吧,发布的答案很有帮助,但我希望有所不同。最终创建了自己的实现。如果有人想要


为此,我使用了
kafka.server.KafkaServer
org.apache.zookeeper.server.ZooKeeperServerMain

嗯,贴出的答案有帮助,但我想要一些不同的东西。最终创建了自己的实现。如果有人想要

为此,我使用了
kafka.server.KafkaServer
org.apache.zookeeper.server.ZooKeeperServerMain