卡夫卡在Docker和Spring Producer上的应用

卡夫卡在Docker和Spring Producer上的应用,docker,apache-kafka,kafka-consumer-api,kafka-producer-api,Docker,Apache Kafka,Kafka Consumer Api,Kafka Producer Api,我正试图在Docker和Spring上配置Kafka spring应用程序负责生成消息。Docker应该把它们吃掉。我已准备好容器,正在尝试连接 不幸的是,我得到了一个错误: [Producer clientId=1-1] 1 partitions have leader brokers without a matching listener, including [myTopic-0] 我的docker组件 version: '3' services: zookeeper: co

我正试图在Docker和Spring上配置Kafka

spring应用程序负责生成消息。Docker应该把它们吃掉。我已准备好容器,正在尝试连接

不幸的是,我得到了一个错误:

[Producer clientId=1-1] 1 partitions have leader brokers without a matching listener, including [myTopic-0]
我的docker组件

version: '3'
services:
  zookeeper:
    container_name: zookeeper
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    container_name: kafka
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
     KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
     KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
     KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
我的Spring配置


请帮助。

我认为您的听众地址配置不好。它应该是localhost或实际的docker主机名

这是我的项目中的一个工作示例。请注意,我使用的是原始confluence图像,但它也应适用于wurstmeister的图像:

version: '3.7'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper
    hostname: zookeeper
    environment:
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_CLIENT_PORT: "2181"
      ZOOKEEPER_TICK_TIME: "2000"
      ZOOKEEPER_SERVERS: "zookeeper:22888:23888"
    ports:
      - 2181:2181
  kafka:
    image: confluentinc/cp-kafka
    hostname: kafka
    depends_on:
      - zookeeper
    environment:
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT,PLAINTEXT_UI:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://kafka:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_BROKER_ID: 1
      KAFKA_BROKER_RACK: "r1"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_DELETE_TOPIC_ENABLE: "true"
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
    ports:
      - 9092:9092
      - 29092:29092

我认为你的听众地址配置得不好。它应该是localhost或实际的docker主机名

这是我的项目中的一个工作示例。请注意,我使用的是原始confluence图像,但它也应适用于wurstmeister的图像:

version: '3.7'
services:
  zookeeper:
    image: confluentinc/cp-zookeeper
    hostname: zookeeper
    environment:
      ZOOKEEPER_SERVER_ID: 1
      ZOOKEEPER_CLIENT_PORT: "2181"
      ZOOKEEPER_TICK_TIME: "2000"
      ZOOKEEPER_SERVERS: "zookeeper:22888:23888"
    ports:
      - 2181:2181
  kafka:
    image: confluentinc/cp-kafka
    hostname: kafka
    depends_on:
      - zookeeper
    environment:
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT,PLAINTEXT_UI:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
      KAFKA_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://kafka:9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
      KAFKA_BROKER_ID: 1
      KAFKA_BROKER_RACK: "r1"
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_DELETE_TOPIC_ENABLE: "true"
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
    ports:
      - 9092:9092
      - 29092:29092
使用bitnami堆栈

version: '3'

services:
  zookeeper:
    container_name: zookeeper
    image: 'bitnami/zookeeper:3.4.14'
    ports:
      - '2181:2181'
    volumes:
      - 'zookeeper_data:/bitnami'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
    restart: unless-stopped
  kafka:
    container_name: kafka
    image: 'bitnami/kafka:2.3.0'
    ports:
      - '9092:9092'
    volumes:
      - 'kafka_data:/bitnami'
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092
    depends_on:
      - zookeeper
    restart: unless-stopped

volumes:
  zookeeper_data:
    driver: local
  kafka_data:
    driver: local
查看他们的指南-有很多关于它如何工作的见解+卡夫卡集群+更多

使用bitnami堆栈

version: '3'

services:
  zookeeper:
    container_name: zookeeper
    image: 'bitnami/zookeeper:3.4.14'
    ports:
      - '2181:2181'
    volumes:
      - 'zookeeper_data:/bitnami'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
    restart: unless-stopped
  kafka:
    container_name: kafka
    image: 'bitnami/kafka:2.3.0'
    ports:
      - '9092:9092'
    volumes:
      - 'kafka_data:/bitnami'
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092
    depends_on:
      - zookeeper
    restart: unless-stopped

volumes:
  zookeeper_data:
    driver: local
  kafka_data:
    driver: local
查看他们的指南-有很多关于它如何工作的见解+卡夫卡集群+更多


我的docker编写文件:

版本:“3”
服务:
动物园管理员:
容器名称:动物园管理员
图片:confluentinc/cp zookeeper:5.3.1
端口:
- "2181:2181"
环境:
ZOOKEEPER_客户端_端口:2181
动物园管理员时间:2000
卷数:
-zookeeper数据:/var/lib/zookeeper/data
-zookeeper日志:/var/lib/zookeeper/log
卡夫卡:
容器名称:卡夫卡
图片:confluentinc/cp卡夫卡:5.3.1
取决于:
-动物园管理员
端口:
- "9092:9092"
- "29092:29092"
环境:
卡夫卡经纪人编号:1
卡夫卡•动物园管理员•连接:“动物园管理员:2181”
卡夫卡·国际经纪人·听众·姓名:明文
卡夫卡播发的监听器:明文://KAFKA:29092,明文://${DOCKER\u HOST\u IP:-127.0.0.1}:9092
卡夫卡侦听器安全协议映射:明文:明文,明文主机:明文
卡夫卡偏移量主题复制系数:1
卷数:
-卡夫卡数据:/var/lib/kafka/data
卷数:
动物园管理员数据:
动物园管理员日志:
卡夫卡数据:

我的docker编写文件:

版本:“3”
服务:
动物园管理员:
容器名称:动物园管理员
图片:confluentinc/cp zookeeper:5.3.1
端口:
- "2181:2181"
环境:
ZOOKEEPER_客户端_端口:2181
动物园管理员时间:2000
卷数:
-zookeeper数据:/var/lib/zookeeper/data
-zookeeper日志:/var/lib/zookeeper/log
卡夫卡:
容器名称:卡夫卡
图片:confluentinc/cp卡夫卡:5.3.1
取决于:
-动物园管理员
端口:
- "9092:9092"
- "29092:29092"
环境:
卡夫卡经纪人编号:1
卡夫卡•动物园管理员•连接:“动物园管理员:2181”
卡夫卡·国际经纪人·听众·姓名:明文
卡夫卡播发的监听器:明文://KAFKA:29092,明文://${DOCKER\u HOST\u IP:-127.0.0.1}:9092
卡夫卡侦听器安全协议映射:明文:明文,明文主机:明文
卡夫卡偏移量主题复制系数:1
卷数:
-卡夫卡数据:/var/lib/kafka/data
卷数:
动物园管理员数据:
动物园管理员日志:
卡夫卡数据:

我遇到错误:org.apache.kafka.common.KafkaException:无法解析明文\u主机://:对于代理端点UH sry,我忘记替换播发的侦听器的环境变量,我编辑了代码。好了,现在进入kafka制作者控制台消息“[producer clientId=producer-1]集群ID:MXAUhLOFRmuP9JSMUVi7Ow”->这是否意味着它有效?如何检查消息是否已发送?您可以使用许多工具,例如控制台客户或卡夫卡工具(GUI):
https://www.kafkatool.com/
我遇到错误:org.apache.kafka.common.KafkaException:无法解析明文\u HOST://:对于代理端点UH sry,我忘记替换播发的侦听器的环境变量,我编辑了代码。好的,现在进入卡夫卡制作人控制台消息“[producer clientId=producer-1]Cluster ID:MXAUhLOFRmuP9JSMUVi7Ow”>这意味着它可以工作吗?如何检查消息是否已发送?您可以使用许多工具,例如控制台客户或卡夫卡工具(GUI):
https://www.kafkatool.com/