如何检测kafka服务器是否断开连接

时间:2019-03-06 16:23:41

标签: apache-kafka apache-kafka-streams

你好Kafka社区。

我正在使用Kafka Streams API的服务。

我的服务是否可以检测它是否已与kafka服务器断开连接?

这里是一些背景。我正在尝试为我的服务增加弹性。也就是说,如果我的服务未连接到kafka,则应发出警报以通知我们有问题。

我正在使用module.exports = { context: __dirname, entry: "./app.js", mode: "development", output: { path: __dirname + "/dist", filename: "bundle.js" }, watch: true, module: { rules: [ { test: /\.js$/, exclude: /(node_modules)/, use: { loader: "babel-loader", options: { presets: ["@babel/preset-env", "@babel/preset-react"] } } } ] } }; 安装一个侦听器,该侦听器会在kafka流从KafkaStreams.setStateListener()变为RUNNING状态时捕获。

尽管这有助于捕获某些错误,但是此状态侦听器机制无法捕获其他类型的错误。例如,如果kafka服务器关闭,并且服务不再连接到kafka服务器,则该服务将保持ERROR状态。

我遇到了在日志中看到以下异常的情况

RUNNING

上面的错误是从软件包Error sending fetch request (sessionId=INVALID, epoch=INITIAL) to node 1001: org.apache.kafka.common.errors.DisconnectException 中的FetchSessionHandler.java打印出来的。

那么我的服务是否有办法检测到此类错误?

1 个答案:

答案 0 :(得分:0)

不。 (请参阅https://issues.apache.org/jira/browse/KAFKA-6520

问题是,如果基础使用者失去了与群集的连接,则它不会公开,而只会重试内部连接。