当前位置: 首页 > 知识库问答 >
问题:

Kafka制作人说“未知话题或分区”

宗冠宇
2023-03-14
version: '2'
services:
  zookeeper:
   image: wurstmeister/zookeeper
   ports:
     - "2181:2181"
  kafka:
    image: wurstmeister/kafka:0.9.0.1
    ports:
      - "9092:9092"
    links:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  kafka2:
    image: wurstmeister/kafka:0.9.0.1
    ports:
      - "9093:9092"
    links:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100
      KAFKA_ADVERTISED_PORT: 9093
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  kafka3:
    image: wurstmeister/kafka:0.9.0.1
    ports:
      - "9094:9092"
    links:
      - zookeeper
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100
      KAFKA_ADVERTISED_PORT: 9094
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

我指定“kafka_auto_create_topics_enable:'false'”是因为我想手工创建主题,所以我进入第一个broker容器并键入以下内容:

./kafka-topics.sh--创建--zookeeper 172.19.0.2:2181--主题test1--分区4--复制-因子3

看起来一切都很好:

./kafka-topics.sh--list--zookeeper 172.19.0.2:2181->test1

但是,当我尝试这样做时:

./kafka-console-producer.sh--broker-list localhost:9092--topic test1

如果我再创造一次这个话题,它说它已经存在了,所以我不知道发生了什么。

共有1个答案

易昌翰
2023-03-14

您需要正确配置网络,因为Kafka可以跨主机工作,并且需要能够访问所有主机。

本帖详解。

您可能还希望参考https://github.com/confluentinc/cp-docker-images/blob/5.0.0-post/examples/cp-all-in-one/docker-compose.yml获得一个工作的Docker组合的示例。

 类似资料:
  • 假设我有多个设备。每个设备都有不同类型的传感器。现在我要把每个传感器的每个设备的数据发送给Kafka。但我对Kafka的主题感到困惑。用于处理此实时数据 null 情况2:向一个主题发送数据 设备1(传感器A,B,C),设备2(传感器A,B,C)...设备....->主题 > 这不是数据瓶颈吗。因为它将表现为队列,来自某个传感器的数据将在队列中落后,并且不会被实时处理。 设备1 ->传感器A-TO

  • 我想知道简单主题和分区主题之间的区别是什么。根据我的理解,为了平衡负载,主题已经被分区,每个消息都有偏移,使用者将确认以确保先前的消息已经被确认。如果没有分区和使用者不匹配,由kafka完成的重新平衡会有效地管理。 如果创建多个主题而不是分区,是否会影响操作效率。

  • 我是新的Kafka和尝试实现一个简单的生产者,发送数据到一个主题。如果主题不存在,我希望将sutiation作为异常处理。 但是,如果主题不存在,则继续轮询消息。将忽略ProducerConfig的超时和重试。 有办法解决这个问题吗?

  • 我想使用spring cloud stream framework创建一个kafkaendpoint,它将有一个http post api到。如何动态更改属性 我可以使用实现来实现上述功能,但不知道是否有可能在Spring中开发此功能。

  • 我有3个Kafka经纪人在3个不同的VM,其中一个还运行一个Zookeeper。我现在创建一个有8个分区的主题。制作人在创建的“主题”上向这些经纪人组推送消息。 Kafka是如何在经纪人之间分配话题及其分区的? 当新的Kafka代理加入集群时,Kafka是否重新分发主题? 创建主题后是否可以增加主题分区?

  • 我正在考虑创建一个独立的Kafka生产者,它作为守护进程运行,通过套接字接收消息,并将其可靠地发送给Kafka。 但是,我决不能是第一个想到这个想法的人。这样做的目的是避免使用PHP或Node编写Kafka生成器,而只是通过套接字将消息从这些语言传递到独立的守护进程,这些语言负责传递,而主应用程序则一直在做自己的事情。 此守护进程应负责在发生中断时进行重试传递,并充当服务器上运行的所有程序的传递点