Kafka和Docker:将Kafka消息推送给另一个Docker消费者

场景:我需要从Docker化的Kafka容器中推送一条消息给我的队友的物理机器。

一个队友(我们称他为阿尔弗雷德),他的卡夫卡直接安装在Windows上。

另一个(我们称之为Bob)也使用Docker化的Kafka容器。

迄今为止的结果:

我们已经能够将卡夫卡制作的消息从我的卡夫卡包含到Al计算机的非时间消费者实例的消费者中。 所以我们知道没有进一步的configuration; 生产者侧; 是必须的。 访问Rob Reris的dockerized kafkacertificate更棘手。 在使用命令docker docker network inspect bridge我们注意到dockerized容器是从公司networking的一般IPv4地址封装的。

在这里输入图像说明

我们确定并试图testing一些潜在的问题。

1.接收者虚拟机的端口转发规则 已经尝试调整端口转发规则。 没有解决scheme。 2.重新configuration位于接收者文件夹的opt / kafka_2.11-0.9.0.0 / config /下的server.properties文件。 没有解决scheme3.重新configuration位于kafka容器下的server.properties / etc / kafka / No solution 4.在我们正在使用的kafka运行版本的docker-compose.yml文件中添加一个额外的行,然后重buildkafka Bob的容器。 线路join: KAFKA_LISTENERS: "PLAINTEXT://0.0.0.0-9092"

到目前为止,当我向Bob的内部networkingIP发送testing消息时,我们还没有收到。

我的testing消息:

 /bin/kafka-console-producer.sh --broker-list {Bob's IPv4}:9092 --topic test 

难道是我真的需要瞄准他的Docker化的IP …不知何故? 虽然我确定我们已经有了VituralBox的Site-to-Site端口转发。

援助感谢。

您可能面临的问题是众所周知的与卡夫卡广告一个私有IP给Zookeeper的问题,这是客户无法访问的。

当你将卡夫卡docker化时,你有两个广泛的select:

  • 使用networking模式=主机启动Kafka容器,所以Kafka使用主机networking堆栈。
  • 使用容器端口转发,并使Kafka广告所使用的主机IP和端口设置Kafkaconfiguration“advertised.listeners”到正确的价值。 为了自动执行此操作,可能需要创build一个引导脚本,以便在运行服务之前find主机IP(和端口)并设置Kafka属性文件。 看看wurstmeister / kafka-docker 。