我有一个简单的kafka流应用程序,该应用程序利用交互式查询并使用RESTfull进行实例通信。
该应用程序在具有多个流实例的Docker外部运行良好。并且streams#allMetadata()返回所有正在运行的实例的正确列表。但是,一旦我在docker中运行该应用程序,streams#allMetadata()的结果将是一个空数组[]。
注意:在docker中运行时,除其他实例的可发现性之外,其他所有功能均有效。 [我可以与不同的流实例进行交互,并获取它们存储的数据]
我已经在这里查看过其他相同问题的文章,但是我的似乎有点不同other posts
APPLICATION_ID
。BOOTSTRAP_SERVERS_CONFIG
配置正确] APPLICATION_SERVER_CONFIG
在每个实例上均已正确配置] 我在这里想念什么?
答案 0 :(得分:2)
我找到了问题并解决了。
该问题是由于我的流式应用程序docker基本映像中缺少库[ld-linux-x86-64.so.2
]引起的,该库由RocksDB的一个依赖项[librocksdbjni8077190960714261011.so
]使用(如图!)。
解决方案是仅使用具有上述库的另一个基础图像,因此我将流应用程序的基础图像从openjdk:8-jdk-alpine
更改为anapsix/alpine-java:latest
,现在一切正常。
注意:遇到上述问题时,我注意到了另一种症状。我的流媒体应用偶尔会失去与kafka经纪人的连接。我会时不时地在日志中看到一条有关“无法到达代理节点...”的消息。上述修复后,此问题消失了。我不知道它们之间的关系。