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
相关推荐
极限实验室44 分钟前
使用 Docker Compose 轻松实现 INFINI Console 离线部署与持久化管理
docker·devops
天地之于壹炁兮2 小时前
Docker革命:软件开发的集装箱时代
docker·容器·eureka
勇往直前plus2 小时前
Docker 拉取镜像:SSL 拦截与国内镜像源失效问题解决
docker·容器·https·ssl
醉卧雕龙舫 、3 小时前
五.docker环境搭建实例
docker
陈果然DeepVersion3 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(六)
spring boot·kafka·消息队列·向量数据库·java面试·rag·ai智能客服
陈果然DeepVersion4 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(四)
java·spring boot·微服务·kafka·面试题·rag·ai智能客服
SeaDhdhdhdhdh4 小时前
kafka 延迟消费配置
kafka·延迟消费
HezhezhiyuLe4 小时前
Kafka关闭日志,启动一直打印日志
kafka
陈果然DeepVersion4 小时前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(二)
spring boot·kafka·消息队列·向量数据库·java面试·rag·ai智能客服
维尔切4 小时前
Kafka 概述与安装部署整理
运维·分布式·kafka