服务属性中的 Kafka "num.partitions"设置不生效



我们在Docker容器中使用Kafka。如果在生成或使用消息时主题不存在,我们会自动创建主题。我们想要3个分区的主题,所以设置

num.partitions=3

在kafka容器中的文件/etc/kafka/server.properties中。然而,它并没有生效。在完成设置并重新启动容器后,然后尝试订阅或发布一些不存在的主题,这些主题是创建的,但只有一个分区。

我们在从image confluentinc/cp kafka:5.1.0创建的容器上以及从image conflientinc/cp-enterprise kafka:5.3.1创建的容器中尝试了这一点,并且行为是相同的。

我们测试了使用命令创建主题:

kafka-topics --create --topic my_topic --zookeeper zookeeper:2181 --replication-factor 1 --partitions 3

这正确地创建了具有三个分区的主题。但是我们需要Kafka来自动创建多分区主题。

是什么原因导致了问题?或者如何让Kafka自动创建多分区主题?

我们没有任何动态配置。这是通过运行以下命令来验证的:

kafka-configs --bootstrap-server kafka:9092 --entity-type brokers --entity-default --describe
kafka-configs --bootstrap-server kafka:9092 --entity-type brokers --entity-name 0 (or other ids) --describe

这些命令返回空结果。

这个答案来得有点晚,但我一直在使用docker映像处理同样的问题:confluentinc/cp enterprise kafka:5.3.4

对我来说,解决方案是在我的docker compose中添加一个新的环境变量:KAFKA_NUM_PARTITIONS:3(或您想要的分区(

这将自动在/etc/kafka/目录下的kafka.properties文件中添加属性num.partions

修改/etc/kafka/server.properties中的属性num.partitions对我也不起作用。

Docker容器是短暂的,这意味着一旦停止它们,所有应用的更改都将丢失。

如果你想覆盖默认设置,你必须装载属性文件:

  1. 在机器上创建server.properties文件
  2. 填写您需要的属性(包括原始属性(
  3. 装载此文件,为了替换容器中的原始文件:
docker run ... -v /path/to/custom/server.properties:/etc/kafka/server.properties ...

最新更新