我想在 docker-compose 中启动时创建和配置 kafka 主题。我可以借助附加服务来完成此操作(请参阅 init-kafka)。
是否可以在不使用额外服务的情况下创建 Kafka 主题?我尝试command: kafka-topics.sh --create --bootstrap-server kafka:9092 --topic tasks_topic --partitions 3
在 Kafka 服务中使用,但没有成功
该代码对我有用:
version: "3.8"
services:
zookeeper:
image: bitnami/zookeeper:latest
ports:
- 2181:2181
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
kafka:
image: bitnami/kafka:latest
ports:
- 9092:9092
- 9093:9093
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CLIENT://:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,CLIENT://localhost:9093
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
depends_on:
- zookeeper
init-kafka:
image: bitnami/kafka:latest
command: kafka-topics.sh --create --bootstrap-server kafka:9092 --topic tasks_topic --partitions 3
depends_on:
- kafka
更新:我尝试了这个代码(添加了KAFKA_CREATE_TOPICS)但它没有帮助
kafka:
image: bitnami/kafka:latest
ports:
- 9092:9092
- 9093:9093
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CLIENT://:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,CLIENT://localhost:9093
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
- KAFKA_CREATE_TOPICS="my_tasks_topic1:5:1"
depends_on:
- zookeeper
有多种方法可以做到这一点。但你肯定可以通过
environment
KAFKA_CREATE_TOPICS
环境变量将在容器启动时自动创建 Kafka 主题。它使用以下格式topic_name:partitions:replication_factor
。