簡體   English   中英

如果kafka中不存在屬性中的kafka主題名稱,如何中斷啟動spring-boot應用程序?

[英]How can I interrupt startup spring-boot application if kafka topic name from properties does not exist in kafka?

我嘗試在啟動spring-boot應用程序上檢查Kafka主題。 我想拋出異常並中斷啟動。 這是我的配置:

@Slf4j
@Configuration
public class KafkaTopicConfig implements ApplicationRunner {

    private final KafkaAdmin kafkaAdmin;
    private final TopicProperties topicProperties;

    public KafkaTopicConfig(KafkaAdmin kafkaAdmin, TopicProperties topicProperties) {
        this.kafkaAdmin = kafkaAdmin;
        this.topicProperties = topicProperties;
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        AdminClient admin = AdminClient.create(kafkaAdmin.getConfig());

        ListTopicsResult listTopicsResult = admin.listTopics();
        listTopicsResult.names().whenComplete((existTopics, throwable) -> {
            log.info("TOPICS LOAD: {}", existTopics.size());
            topicProperties.getTopics().forEach((s, topic) -> {
                if (!existTopics.contains(topic))
                    throw new IllegalStateException("Topic with name: " + topic + " not found in kafka.");
            });
        });
    }
}

但拋出后拋出throw new IllegalStateException("Topic with name: " + topic + " not found in kafka."); 此異常被忽略,應用程序繼續工作。

而不是ApplicationRunner ,使用SmartLifecycle autoStartup=true實現SmartLifecycle並將您的邏輯放在start()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM