如何运行kafka服务器进行开发?

nwsw7zdq  于 2021-06-04  发布在  Kafka
关注(0)|答案(2)|浏览(299)

我需要以最简单的方式运行kafka服务器进行开发。本地服务器上只有一个静态主题,不需要身份验证(或者sasl\plaintext,如果简单的话)。我所需要做的就是以类似json的格式发送和接收消息。我该怎么做?
为什么是Kafka?因为我的项目将是更大项目的一部分,我需要使用外部libs与Kafka合作。
我发现了这一点并通过命令运行它:

docker-compose up -d

这是我的 docker-compose.yml :

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    build: .
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: kafka
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

但是对于我的golang和python客户机,我不能向它们发送或接收消息 localhost:9092 :代理超时。也许我还需要改变什么?

daolsyd0

daolsyd01#

这个 KAFKA_ADVERTISED_LISTENERS 变量可以设置为 localhost:29092 . 通过在docker主机上公布Kafka的位置,可以从容器外部访问Kafka。
请参阅此以了解更多信息。

pjngdqdw

pjngdqdw2#

KAFKA_ADVERTISED_HOST_NAME 需要设置为您的客户机可以去与代理通信的主机。这应该是docker主机的ip,但它设置为 kafka 相反,这是你的客户无法解决的。
根据“先决条件”中与docker图像一起发布的说明:
修改 KAFKA_ADVERTISED_HOST_NAME 在docker-compose.yml中匹配docker主机ip(注意:如果要运行多个代理,请不要使用localhost或127.0.0.1作为主机ip)
下面是正在发生的事情:
您正在使用 localhost:9092 作为客户机中的“bootstrap broker”地址,因此客户机将在这里建立初始连接
一旦连接起来,你的客户就会得到 KAFKA_ADVERTISED_HOST_NAME 作为主机名,从那时起它应该使用它来联系代理。对你来说,这是 kafka (不正确)。
然后,您的客户机断开连接并尝试连接到 kafka . 因为没有到名为 kafka 从你的客户那里,你的客户不能继续。
尝试设置 KAFKA_ADVERTISED_HOST_NAME 成为你的docker主机的ip,看看你是否有更好的运气(另外,您可能还应该使用与您在客户机中使用的引导代理相同的主机ip,而不是 localhost .)

相关问题