首页 > 解决方案 > 如何在 @KafkaListener 中使用 ContainerStoppingErrorHandler 来终止应用程序以防 Kafka 服务器出现 DisconnectException

问题描述

我想处理服务器 DisconnectException 并在服务器 DisconnectException 发生时终止应用程序

如何捕获此错误并停止应用程序?

@KafkaListener(topics = { "${kafka.status-topic}", "${kafka.start-topic}" }, containerFactory = "kafkaListenerContainerFactory")
public void listen(@Payload final String message,
        @Header(KafkaHeaders.RECEIVED_TOPIC) final String topic) {
    log.debug("Received '{}'-message {} from Kafka", topic, message);
    LinkedList<IMessageListener> topicListeners = listeners.get(topic);
    for (final IMessageListener l : topicListeners) {
        // call listeners in a separate thread
        executor.execute(new Runnable() {
            @Override
            public void run() {
                l.messageReceived(topic, message);
            }
        });
    }
}

标签: spring-kafka

解决方案


您可以尝试捕获异常,然后System.exit(0)在 catch 块内调用


推荐阅读