Apache kafka 卡夫卡流:优雅的关闭

Apache kafka 卡夫卡流:优雅的关闭,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,如果我们在后台启动KafkaStream应用程序(比如Linux),是否有一种方法可以从外部向应用程序发送信号,从而启动正常关机?如文档()中所述,建议注册一个调用KafkaStreams#close()的关机挂钩,以实现干净关机: 最终倒计时闩锁=新倒计时闩锁(1); //将关机处理程序连接到catch control-c Runtime.getRuntime().addShutdownHook(新线程(“streams ShutdownHook”){ @凌驾 公开募捐{ streams.cl

如果我们在后台启动KafkaStream应用程序(比如Linux),是否有一种方法可以从外部向应用程序发送信号,从而启动正常关机?

如文档()中所述,建议注册一个调用
KafkaStreams#close()
的关机挂钩,以实现干净关机:

最终倒计时闩锁=新倒计时闩锁(1);
//将关机处理程序连接到catch control-c
Runtime.getRuntime().addShutdownHook(新线程(“streams ShutdownHook”){
@凌驾
公开募捐{
streams.close();
倒计时();
}
});
试一试{
streams.start();
satch.wait();
}捕获(可丢弃的e){
系统出口(1);
}
系统出口(0);

如果应用程序是作为后台进程启动的,我认为control-c可能不适用。我们可以使用PID杀死stream应用程序实例,但是不确定上述操作是否能够实现干净的关闭。请确认
Ctrl-C
发送
SIGINT
信号,正常
kill
发送
SIGTERM
。这些信号由停机挂钩覆盖(请参阅和)。未涵盖的是来自
kill-9
SIGKILL
。我建议您阅读Java文档——这并不是Kafka的Streams API所特有的。我们现在使用的是0.10.1,因此,通过仅为shutdown钩子添加一个新线程,是否有可能遇到与下面列出的相同的问题?这不应该是一个问题。报告的多线程问题仅影响内部
流线程。