kafka streams.allmetadata()返回docker中的空列表(交互式查询)

mgdq6dx1  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(373)

我有一个简单的kafka流应用程序,它利用交互式查询和restfull示例进行通信。
该应用程序在docker之外使用多个streams示例运行良好。streams#allmetadata()返回所有运行示例的正确列表。但是,在docker中运行应用程序后,streams#allmetadata()的结果是一个空数组[]。
注意:在docker中运行时,除了其他示例的可发现性之外,其他一切都正常工作[我可以与不同的流示例进行交互,并可以获得它们存储的数据]
我已经看了其他同样问题的帖子,但是我的好像和其他帖子有点不同
我有同样的 APPLICATION_ID 在我所有的例子中。
Kafka和任何一个示例之间的交流都是有效的。水流正常运行 BOOTSTRAP_SERVERS_CONFIG [配置正确]
数据正确地存储在所有示例上,我可以通过每个示例的ip直接与之交互 APPLICATION_SERVER_CONFIG 在每个示例上配置正确]
我运行的是同一版本的kafka和streams v1.1.0。
我尝试了confluent和landoop kafka docker图像,结果相同。
我错过了什么?

v1l68za4

v1l68za41#

我发现了问题并解决了它。
这个问题是由丢失的图书馆引起的[ ld-linux-x86-64.so.2 ]从我的流媒体应用程序docker base映像来看,rocksdb的一个依赖项使用了该库[ librocksdbjni8077190960714261011.so ](想想看!)。
解决方案是只使用另一个具有上述库的基本图像,因此我将我的流应用程序的基本图像从 openjdk:8-jdk-alpineanapsix/alpine-java:latest 现在一切正常。
注意:当我有上述问题,我注意到另一个症状。我的流媒体应用程序会偶尔失去与Kafka经纪人的连接。我时不时会在日志上看到一条关于“无法访问代理节点…”的消息。此问题在上述修复后消失。我不知道它们之间有什么关联。

相关问题