Kafka 本地开发环境 + 可视化 UI 快速搭建与排坑记录

本地搭建 Kafka + UI 开发环境遇坑总结

适合初学者、小型开发项目、需要使用 Kafka + UI 进行消息流调试的各类场景。 本文记录了我在使用 Docker Compose 本地搭建 Kafka + Redpanda UI 开发环境过程中遇到的典型坑与完整解决方案,适合所有需要快速上手 Kafka 可视化管理与测试的开发者。


一、为什么要搭建 Kafka + UI

在开发中,Kafka 通常被用作消息队列、事件总线、静态分布式处理等场景,但相比 RabbitMQ 等开箱即用工具,Kafka 一般需要配合下列环境操作:

  • 配合 Zookeeper
  • 需要自己创建 topic
  • 没有 UI 不方便调试
  • 配置错误后报错不明确

因此,我们定义一套简洁版 Kafka + Redpanda Console + Mongo + CLI 的本地开发环境,实现可视化、可测试、可扩展。


二、使用的镜像 & 环境

Docker Desktop + docker-compose + 以下镜像

  • Kafka Broker: confluentinc/cp-kafka:7.5.0
  • Zookeeper: confluentinc/cp-zookeeper:7.5.0
  • Kafka UI: docker.io/redpandadata/console:latest
  • Mongo: mongo:6.0
  • Kafka CLI: redpandadata/redpanda:v23.3.9(用于 rpk produce)

配合版本约定:Docker 20+ / docker-compose v2+ / Windows 10+ / Linux / Mac


三、docker-compose.yml 完整配置

所有镜像会在首次运行 docker compose up -d 时自动拉取,无需手动下载。

在包含 docker-compose.yml 的目录中执行该命令即可启动服务。

yaml 复制代码
docker-compose.yml:

version: '3.8'
services:

  zookeeper:
    image: confluentinc/cp-zookeeper:7.5.0
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000

  kafka:
    image: confluentinc/cp-kafka:7.5.0
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
  
  kafka-ui:
    image: docker.io/redpandadata/console:latest
    ports:
      - "8081:8080"
    environment:
      - KAFKA_BROKERS=kafka:9092

  mongo:
    image: mongo:6.0
    container_name: mongo
    ports:
      - "27017:27017"
    volumes:
      - mongo_data:/data/db

volumes:
  mongo_data:

四、遇到的坑 & 错误

1. 混淆了 Redpanda Console 的商业版与社区版

原因: 搜索 Redpanda Console 时,第一结果通常指向商业试用版本(例如 quickstart.tar.gz)

解决: 切换为社区版镜像: docker.io/redpandadata/console:latest


2. Kafka UI 显示 Login page 并且 Failed to fetch authentication methods

原因: 前端 JS 尝试连接后端 /api/auth,后端未启动或未对外启动

解决: 删除缓存,重新启动。使用 Incognito 方式访问或 DevTools 重缓存。

3. Kafka UI 无法连接 kafka,报 [::1]:9092

原因: UI 内部连接 localhost,应连接 kafka 容器名

解决: KAFKA_BROKERS=kafka:9092 + ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092

4. the input device is not a TTY

原因: Git Bash / MinTTY 不支持 TTY

解决: 使用 PowerShell / CMD ,或前缀 winpty


五、如何测试发送 Kafka 消息

🧵 创建 Topic(通过 Redpanda Console UI)

  1. 打开浏览器访问:http://localhost:8081
  2. 左侧点击 Topics
  3. 点击右上角的 + Create topic 按钮(或 Create Topic
  4. 输入 Topic 名称,例如:test-topic
  5. 分区数和副本数使用默认值即可,点击 Create

创建完成后,你可以在 Topic 列表中看到 test-topic,点击进入后可:

  • 查看基本信息
  • 查看消息列表
  • 甚至设置保留策略、分区详情等

📝 注意 :你必须先创建 topic,Kafka 才能正确地接受发送的消息,否则会提示 Unknown topic or partition 错误。

🛠 使用 CLI 工具发送测试消息

使用 Kafka 自带的 CLI 工具 kafka-console-producer 即可满足消息发送需求(在terminal中运行命令):

shell 复制代码
# 进入 kafka 容器
> docker exec -it docker-dev-env-kafka-1 bash

# 执行生产者命令
> kafka-console-producer --bootstrap-server kafka:9092 --topic test-topic

# 输入内容并回车
Hello from CLI

# 使用 Ctrl + C 退出

然后即可在 Redpanda Console UI 中查看消息。


Redpanda Console UI 查看

  1. 打开 http://localhost:8081
  2. 点击 Topics 进入 test-topic
  3. 切换到 Messages
  4. 可看到上面 CLI 发送的消息

六、总结 & 可备份的开发环境

模块 状态 备注
Kafka Broker ✅ 已启动 基础服务
Redpanda Console UI ✅ 可进入,无需登录 管理与可视化
CLI Producer ✅ 可用 本地测试生产消息
Topic 管理 ✅ 可创建、查看消息 可通过 UI 完成
MongoDB 🟡 可选 用于配套数据库需求
UI 问题处理 ✅ 全部解决 各种报错已排查清楚

如果本文对你有帮助,欢迎点赞、收藏、关注支持,

也欢迎在评论区交流你的使用体验或问题!

相关推荐
predisw1 小时前
Kafka broker 写消息的过程
分布式·kafka
Wo3Shi4七2 小时前
消息不丢失:生产者收到写入成功响应后消息一定不会丢失吗?
后端·kafka·消息队列
Wo3Shi4七6 小时前
消息积压:业务突然增长,导致消息消费不过来怎么办?
后端·kafka·消息队列
小马哥编程15 小时前
【ISAQB大纲解读】Kafka消息总线被视为“自下而上设计”?
分布式·kafka·系统架构·linq
shangjg315 小时前
Kafka 的 ISR 机制深度解析:保障数据可靠性的核心防线
java·后端·kafka
大数据0016 小时前
Docker慢慢学
mysql·docker·kafka·n8n
帅气的小峰18 小时前
1-【源码剖析】kafka核心概念
分布式·kafka
昭阳~21 小时前
Kafka深度技术解析:架构、原理与最佳实践
分布式·架构·kafka
ikun·21 小时前
Kafka 消息队列
分布式·kafka
Wo3Shi4七1 天前
怎么在Kafka上支持延迟消息?
后端·kafka·消息队列