你好Kafka社区。 p>
我正在使用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
打印出来的。
那么我的服务是否有办法检测到此类错误?
答案 0 :(得分:0)
不。 (请参阅https://issues.apache.org/jira/browse/KAFKA-6520)
问题是,如果基础使用者失去了与群集的连接,则它不会公开,而只会重试内部连接。