【发布时间】:2018-07-18 08:58:00
【问题描述】:
我有一个简单的 kafka 流应用程序,它利用交互式查询并使用 RESTfull 进行实例通信。
该应用程序在具有多个流实例的 docker 之外运行良好。并且流#allMetadata() 返回所有正在运行的实例的正确列表。但是,一旦我在 docker 中运行应用程序,streams#allMetadata() 的结果就是一个空数组 []。
注意:在 docker 中运行时,除了其他实例的可发现性之外,一切正常。 [我可以与不同的流实例进行交互,并且可以获取它们存储的数据]
我已经在这里查看过同样问题的其他帖子,但我的似乎有点不同other posts
- 我在所有实例中都有相同的
APPLICATION_ID。 - Kafka 与任何单个实例之间的通信正常。并且 Streams 工作正常 [意思是
BOOTSTRAP_SERVERS_CONFIG配置正确] - 数据在所有实例上都正确存储,我可以通过其 IP 直接与每个实例交互[意思是
APPLICATION_SERVER_CONFIG在每个实例上都正确配置] - 我正在运行相同版本的 Kafka 和 Streams v1.1.0。
- 我尝试了 confluent 和landoop Kafka docker 图像,结果相同。
我在这里错过了什么?
【问题讨论】:
-
您是否仔细检查了实际分配?应用程序在 docker 中运行时是否处理数据?我对问题可能是什么感到有点困惑。
-
我们正在使用一个 dockerized 流应用程序,所以这是肯定的。需要检查几件事:
APPLICATION_SERVER_CONFIG中配置的端口是否由同一端口上的 docker 对外暴露?是否存在多个流应用在同一主机上的不同容器中运行的情况? -
@MatthiasJ.Sax :是的,我确实检查了分区分配,我的分区分配正确,我可以看到在 Kafka 中使用正确的数据 [聚合] 创建了流内部主题。这就是为什么我很困惑。顺便说一句,我找到了根本原因问题并在下面发布了解决方案。
-
@KyleFransham:是的,我确保端口分配正确,我能够正确地与每个单独的实例进行交互。所以这不是端口配置问题。顺便一提。我找到了根本原因并在下面发布了解决方案。
标签: docker apache-kafka apache-kafka-streams