Kafka streams.allMetadata() returns DOCKER 中的空列表(交互式查询)

Kafka streams.allMetadata() returns empty list in DOCKER (interactive queries)

我有一个简单的 kafka 流应用程序,它利用交互式查询并使用 RESTfull 进行实例通信。

该应用程序在 docker 之外运行良好,具有多个流实例。 streams#allMetadata() returns 是所有 运行ning 实例的正确列表。但是,一旦我 运行 应用程序在 docker 中,streams#allMetadata() 的结果是一个空数组 []。

注意:当 运行ning 在 docker 时,除其他实例的可发现性外,一切正常。 [我可以与不同的流实例交互并可以获取它们存储的数据]

我已经看过这里有同样问题的其他帖子,但我的似乎有点不同

我在这里错过了什么?

我发现并解决了问题。

问题是由于我的流式应用程序 docker 基本映像中缺少库 [ld-linux-x86-64.so.2] 引起的,该库由 RocksDB 的依赖项之一 [librocksdbjni8077190960714261011.so] 使用(去数字!)。

解决方案是只使用另一个具有上述库的基础图像,所以我将我的流媒体应用程序的基础图像从 openjdk:8-jdk-alpine 更改为 anapsix/alpine-java:latest,现在一切正常。

注意:当我遇到上述问题时,我注意到了另一个症状。我的流媒体应用程序会偶尔失去与 kafka 代理的连接。我会时不时地在日志中看到一条关于 "unable to reach the broker node..." 的消息。上述修复后该问题消失。我不知道它们是如何关联的。