手動啟動 Kafka Streams 處理器

Spring Cloud Stream Kafka Streams 繫結器提供了基於 Spring for Apache Kafka 的 StreamsBuilderFactoryBean 之上的一個名為 StreamsBuilderFactoryManager 的抽象。此管理器 API 用於控制繫結器應用程式中每個處理器對應的多個 StreamsBuilderFactoryBean。因此,當使用繫結器時,如果您想手動控制應用程式中各種 StreamsBuilderFactoryBean 物件的自動啟動,您需要使用 StreamsBuilderFactoryManager。您可以使用屬性 spring.kafka.streams.auto-startup 並將其設定為 false,以關閉處理器的自動啟動。然後,在應用程式中,您可以使用如下所示的方法來使用 StreamsBuilderFactoryManager 啟動處理器。

@Bean
public ApplicationRunner runner(StreamsBuilderFactoryManager sbfm) {
    return args -> {
        sbfm.start();
    };
}

當您希望應用程式在主執行緒中啟動,並讓 Kafka Streams 處理器單獨啟動時,此功能非常有用。例如,當您有一個需要恢復的大型狀態儲存時,如果處理器像預設情況那樣正常啟動,這可能會阻止您的應用程式啟動。如果您正在使用某種活躍度探針機制(例如在 Kubernetes 上),它可能會認為應用程式已關閉並嘗試重啟。為了糾正這個問題,您可以將 spring.kafka.streams.auto-startup 設定為 false 並遵循上述方法。

請記住,當使用 Spring Cloud Stream 繫結器時,您不是直接處理 Spring for Apache Kafka 中的 StreamsBuilderFactoryBean,而是 StreamsBuilderFactoryManager,因為 StreamsBuilderFactoryBean 物件由繫結器內部管理。

© . This site is unofficial and not affiliated with VMware.