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 时,除其他实例的可发现性外,一切正常。 [我可以与不同的流实例交互并可以获取它们存储的数据]
我已经看过这里有同样问题的其他帖子,但我的似乎有点不同
- 我在所有实例中都有相同的
APPLICATION_ID
。
- Kafka 与任何单个实例之间的通信正常。并且 Streams 工作正常 [意味着
BOOTSTRAP_SERVERS_CONFIG
配置正确]
- 数据在所有实例上都正确存储,我可以通过其 IP 直接与每个实例交互[意思是
APPLICATION_SERVER_CONFIG
在每个实例上都正确配置]
- 我运行正在使用相同版本的 Kafka 和 Streams v1.1.0。
- 我尝试了 confluent 和 landoop Kafka 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..." 的消息。上述修复后该问题消失。我不知道它们是如何关联的。
我有一个简单的 kafka 流应用程序,它利用交互式查询并使用 RESTfull 进行实例通信。
该应用程序在 docker 之外运行良好,具有多个流实例。 streams#allMetadata() returns 是所有 运行ning 实例的正确列表。但是,一旦我 运行 应用程序在 docker 中,streams#allMetadata() 的结果是一个空数组 []。
注意:当 运行ning 在 docker 时,除其他实例的可发现性外,一切正常。 [我可以与不同的流实例交互并可以获取它们存储的数据]
我已经看过这里有同样问题的其他帖子,但我的似乎有点不同
- 我在所有实例中都有相同的
APPLICATION_ID
。 - Kafka 与任何单个实例之间的通信正常。并且 Streams 工作正常 [意味着
BOOTSTRAP_SERVERS_CONFIG
配置正确] - 数据在所有实例上都正确存储,我可以通过其 IP 直接与每个实例交互[意思是
APPLICATION_SERVER_CONFIG
在每个实例上都正确配置] - 我运行正在使用相同版本的 Kafka 和 Streams v1.1.0。
- 我尝试了 confluent 和 landoop Kafka 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..." 的消息。上述修复后该问题消失。我不知道它们是如何关联的。