Java 如何在未捕获异常处理程序中重新启动kafka流应用程序?
在未捕获异常处理程序中捕获异常后,我想重新启动kafka流应用程序。如何执行此操作 如果您的应用程序(或者更准确地说,您的应用程序的一个实例)达到了Kafka的Streams API中的Java 如何在未捕获异常处理程序中重新启动kafka流应用程序?,java,apache-kafka,apache-kafka-streams,Java,Apache Kafka,Apache Kafka Streams,在未捕获异常处理程序中捕获异常后,我想重新启动kafka流应用程序。如何执行此操作 如果您的应用程序(或者更准确地说,您的应用程序的一个实例)达到了Kafka的Streams API中的UncaughtExceptionHandler,那么它已经过了无法返回的点——您无法从那里重新启动应用程序 UEH旨在帮助您优雅地关闭应用程序实例,例如通过编写信息日志消息、向监控设置发送度量等 Kafka Streams应用程序是普通的Java/Scala应用程序,这意味着它们作为JVM进程运行。您可以使用任
UncaughtExceptionHandler
,那么它已经过了无法返回的点——您无法从那里重新启动应用程序
UEH旨在帮助您优雅地关闭应用程序实例,例如通过编写信息日志消息、向监控设置发送度量等
Kafka Streams应用程序是普通的Java/Scala应用程序,这意味着它们作为JVM进程运行。您可以使用任何能够管理这些进程的工具来保持它们的正常运行,在出现故障时重新启动它们,等等。现在一个流行的例子是Kubernetes,但更多的老式技术,如
supervisord
也能很好地工作。只要重新启动Java进程。。。如果您没有更改组/应用程序ID,则会从最新提交的提交中提取偏移量。如果我没有理解,您通常会将此类异常发送到称为“死信队列”的单独主题。这比实现“重试逻辑”要简单@cricket_007我还想重新启动流。。。因为它将持续拾取消息以进行处理卡夫卡仅附加。。。它将从主题的末尾开始不断地处理。您是否总是尝试从主题的开头重新启动?如果是这样,那么将应用程序ID设置为某个UUIDnumber@cricket_007在我的应用程序中,场景是-消息将持续来自上游组件,失败的消息将被捕获并转发到异常主题,日志记录将完成。我面临的问题是,一旦出现异常,我的应用程序就会被阻塞。我尝试了uncaughtexceptionHandler,它现在可以工作了