当前位置: 首页 > news >正文

Docker安装Kafka(不依赖ZooKeeper)

创建docker-compose.yaml

version: "3.9" #版本号
services:
  kafka:
    image: apache/kafka:3.9.0
    container_name: kafka
    hostname: kafka
    ports:
      - 9092:9092  # 容器内部之间使用的监听端口
      - 9094:9094  # 容器外部访问监听端口
    environment:
      KAFKA_NODE_ID: 1
      KAFKA_PROCESS_ROLES: broker,controller
      # 外部访问监听端口为 9092,容器内部使用不同的端口 9094
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9094,CONTROLLER://localhost:9093,PLAINTEXT_CONTAINER://kafka:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9094,PLAINTEXT_CONTAINER://kafka:9092
      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_CONTAINER:PLAINTEXT
      KAFKA_CONTROLLER_QUORUM_VOTERS: 1@localhost:9093
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_NUM_PARTITIONS: 3
      KAFKA_LOG_DIRS: /var/lib/kafka/data
    volumes:
      - ./data/kafka/data:/var/lib/kafka/data

运行docker-compose.yaml

docker compose -f ./docker-compose.yaml up -d

测试kafka

  • 进入容器
docker exec -it kafka bash 
  • 创建topic
/opt/kafka/bin/kafka-topics.sh --bootstrap-server kafka:9092 --create --topic topic-test

  • 打开生产者,在终端发送消息
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server kafka:9092 --topic topic-test
  • 另外打开一个终端,进入容器
docker exec -it kafka bash 
  • 打开消费者,接收消息
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic test-topic --from-beginning

相关文章:

  • 【第10章:自然语言处理高级应用—10.3 NLP在智能客服、舆情分析与情感倾向判断中的应用案例】
  • 关于前后端分离跨域问题——使用DeepSeek分析查错
  • ChatGPT行业热门应用提示词案例-AI绘画类
  • Spring Web MVC入门
  • 分布式事务
  • 【吾爱出品】 视频批量分段工具
  • 438 找到字符串中所有的字母异位词
  • 04性能监控与调优篇(D1_学习前言)
  • 如何利用OGG WEB页面进行MySQL数据库数据复制的配置
  • HTML之JavaScript常见事件
  • 4.buuctf [SWPU2019]Web1及知识点
  • matlab基于梯度下降和软阈值化的去噪算法
  • 民用无人驾驶航空器操控员考试
  • C#: String s = new String(“Hello“)无法编译?编程语言字符集有两个?为什么这种变量名“\u0061\u0062”都能编译通过?
  • netcore https配置
  • node.js + html调用ChatGPTApi实现Ai网站demo(带源码)
  • Ae 效果详解:蒙尘与划痕
  • 类和对象详解(下)-----运算符重载
  • [Vivado报错] [Runs 36-527] DCP does not exist
  • matlab模拟风场的随机脉动风
  • 增诉滥用职权罪,尹锡悦遭韩国检方追加起诉
  • 人民日报钟声:国际社会应共同维护科学溯源的正确方向
  • 美国第一季度经济环比萎缩0.3%
  • 擦亮“世界美食之都”金字招牌,淮安的努力不止于餐桌
  • 澎湃回声丨23岁小伙“被精神病8年”续:今日将被移出“重精”管理系统
  • 青海西宁市城西区副区长于媛媛主动投案,接受审查调查