docker-compose-kafka 4.1.0

文章目录

环境

虚拟机环境 CentOS7.8

单节点部署

kafka 4.1 配置

官方配置说明

https://github.com/apache/kafka/blob/trunk/docker/examples/docker-compose-files/single-node/plaintext/docker-compose.yml

!info

需要注意的是选择的时候需要选择特定的版本~

初始化目录

shell 复制代码
# 创建数据目录
mkdir data
# 设置权限
chmod 777 data

docker-compose.yml

yml 复制代码
services:
  kafka:
    container_name: kafka-v410
    image: apache/kafka:4.1.0
    ports:
      - "9092:9092" 
    volumes:
      - ./data:/var/lib/kafka/data   # 数据目录
    environment:
      # 这里可以自行随机一个
      CLUSTER_ID: "4L6g3nShT-eMCtK--X86sw"
      # 当前 Kafka 节点的唯一 ID(在集群中必须唯一)
      KAFKA_NODE_ID: 1
      # 当前节点同时承担 broker(处理生产/消费请求)和 controller(管理集群元数据)角色
      KAFKA_PROCESS_ROLES: "broker,controller"
      # 只保留两个监听器:一个给客户端,一个给 controller
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
      # 指定了外部可访问的地址和内部通信地址。
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.117.132:9092
      # 定义了不同监听器的安全协议
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
      # 指定哪些监听器名称用于 controller 通信(必须与 KAFKA_LISTENERS 中的名称一致)
      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
      # 指定 broker 之间通信使用的监听器名称(必须与 advertised.listeners 中的名称一致)
      # 此处使用 PLAINTEXT(对应 broker:19092),用于副本同步、leader 选举等内部流量
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      # 因为是单节点,且在容器内,用 "kafka"(服务名)或 "localhost" 都可以
      # 但必须与 LISTENERS 中 CONTROLLER 的 host 一致 → 这里监听 0.0.0.0,所以用 kafka(Docker DNS)
      KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka:9093"
      # 内部 __consumer_offsets 主题的副本数(单节点开发环境设为 1,避免 ISR 不足)
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      # 事务状态日志主题(__transaction_state)所需的最小同步副本数(ISR)
      # 单节点必须设为 1,否则无法写入事务
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      # 消费者组初次加入时延迟触发再平衡的时间(毫秒),设为 0 可加快测试时的组协调速度
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      # Kafka 4.1+ 新增的共享状态协调器主题(用于 Share Groups)的副本数(单节点设为 1)
      KAFKA_SHARE_COORDINATOR_STATE_TOPIC_REPLICATION_FACTOR: 1
      # 共享状态协调器主题的最小 ISR(单节点设为 1)
      KAFKA_SHARE_COORDINATOR_STATE_TOPIC_MIN_ISR: 1
      # 数据目录
      KAFKA_LOG_DIRS: /var/lib/kafka/data

启动

shell 复制代码
docker-compose up -d

运行记录

日志查看

shell 复制代码
 docker logs -f [容器ID]

测试

发送消息

java 复制代码
    @GetMapping("/testSend")
    public String index() throws Exception {
        for (int i = 0; i < 100; i++) {
            kafkaTemplate.send("topic_test", "message:" + i);
        }
        return "ok";
    }

接受消息

java 复制代码
@Slf4j
@Component
public class KafkaConsumer {

    /**
     * 通用
     */
    @KafkaListener(topics = "${kafka.topic-test}", concurrency = "8")
    public void upstreamTopicHandler(List<String> messages) {
        log.info(" string 批量消费到 {} 条数据", messages.size());
        messages.clear();
    }

}

配置文件

yml 复制代码
spring:
  threads:
    virtual:
      enabled: true
  kafka:
    bootstrap-servers: 192.168.117.132:9092
    producer:
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    consumer:
      group-id: store_gr_00
      auto-offset-reset: latest
      client-id: store_gr_00
      max-poll-records: 1000
    listener:
      concurrency: 10
相关推荐
Gss7773 小时前
Docker 容器核心知识总结
docker·容器
罗技1233 小时前
Docker 启动 Easysearch 时自定义初始密码的几种方式
运维·docker·容器
码路工人5 小时前
附录B:kubectl 命令速查表 - Kubernetes 集群管理必备指南
docker·云原生·容器
码路工人5 小时前
附录A:常用 Docker 命令速查表
docker·云原生·容器
love530love5 小时前
【笔记】 Podman Desktop 中部署 Stable Diffusion WebUI (GPU 支持)
人工智能·windows·笔记·python·容器·stable diffusion·podman
zcz16071278216 小时前
Docker Compose 搭建 LNMP 环境并部署 WordPress 论坛
android·adb·docker
java之迷14 小时前
Windows环境下,源码启动+本地部署和启动开源项目Ragflow失败SRE模块
windows·docker·开源
致宏Rex15 小时前
Docker 实战教程(7) | 镜像管理和仓库操作
运维·docker·容器
罗技12315 小时前
不用每次都改 `easysearch.yml` 也能改启动参数 —— 用 Docker 环境变量搞定一切
docker·容器·eureka