【Mac Docker】使用Docker快速安装kafka【详细教程】

Kafka 单节点 KRaft 模式部署与测试

1. 拉取 Kafka 镜像(可能需要科学上网)

docker pull bitnami/kafka

2. 启动 Kafka(单节点 KRaft 模式)

docker run -d --name kafka \
    -p 9092:9092 \
    -e KAFKA_NODE_ID=1 \
    -e KAFKA_KRAFT_MODE=true \
    -e KAFKA_LISTENERS=PLAINTEXT://:9092 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
    -e KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER \
    -e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT \
    -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
    -e KAFKA_TRANSACTION_STATE_LOG_MIN_ISR=1 \
    -e KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1 \
    bitnami/kafka

解释

  • docker run -d --name kafka:在后台运行一个名为 kafka 的容器。
  • -p 9092:9092:将主机的9092端口映射到容器的9092端口,用于客户端连接 Kafka。
  • -e KAFKA_NODE_ID=1:设置 Kafka broker 的节点 ID,在单节点设置中可任意指定。
  • -e KAFKA_KRAFT_MODE=true:启用 KRaft 模式,不再使用 Zookeeper。
  • -e KAFKA_LISTENERS=PLAINTEXT://:9092:配置 Kafka 监听的接口和端口。
  • -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092:设置 Kafka broker 向客户端广告的地址。
  • -e KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER:指定 Kafka 的控制器监听名称。
  • -e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT:映射不同监听器的安全协议。
  • -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1:设置内置主题的副本因子。
  • -e KAFKA_TRANSACTION_STATE_LOG_MIN_ISR=1:设置事务状态日志的最小 ISR。
  • -e KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1:设置事务状态日志的副本因子。

3. 进入 Kafka 容器

docker exec -it kafka /bin/bash

4. 创建测试主题并测试消息发送与接收

4.1 创建测试主题

在 Kafka 容器中,运行以下命令创建一个名为 test 的测试主题:

kafka-topics.sh --create --topic test --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092

解释

  • kafka-topics.sh:Kafka 的主题管理工具。
  • --create:表示创建新主题。
  • --topic test:指定主题名称为 test
  • --partitions 1:设置主题分区数量为 1。
  • --replication-factor 1:设置主题副本数量为 1。
  • --bootstrap-server localhost:9092:指定 Kafka broker 的地址和端口。

4.2 创建生产者并发送消息

执行以下命令启动控制台生产者,并发送消息到 test 主题:

kafka-console-producer.sh --broker-list localhost:9092 --topic test

解释

  • kafka-console-producer.sh:Kafka 的控制台生产者工具。
  • --broker-list localhost:9092:指定 Kafka broker 的地址和端口。
  • --topic test:指定发送消息的目标主题。

4.3 创建消费者并接收消息

在另一个终端窗口中,执行以下命令启动控制台消费者,并接收 test 主题的消息:

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

解释

  • kafka-console-consumer.sh:Kafka 的控制台消费者工具。
  • --bootstrap-server localhost:9092:指定 Kafka broker 的地址和端口。
  • --topic test:指定要消费消息的 Kafka 主题。
  • --from-beginning:从主题的起始位置开始消费所有消息。

发表回复

京ICP备15027918号-1