此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 spring-cloud-stream 4.1.4spring-doc.cadn.net.cn

手动启动 Kafka Streams 处理器

Spring Cloud Stream Kafka Streams Binder 提供了一个名为StreamsBuilderFactoryManagerStreamsBuilderFactoryBean来自 Spring for Apache Kafka。 这个 Manager API 用于控制多个StreamsBuilderFactoryBean基于 Binder 的应用程序中的每个处理器。 因此,在使用 Binder 时,如果要手动控制各种StreamsBuilderFactoryBean对象,您需要使用StreamsBuilderFactoryManager. 您可以使用属性spring.kafka.streams.auto-startup,并将其设置为false以关闭处理器的自动启动。 然后,在应用程序中,您可以使用如下内容来启动处理器StreamsBuilderFactoryManager.spring-doc.cadn.net.cn

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

当您希望应用程序在主线程中启动并让 Kafka Streams 处理器单独启动时,此功能非常方便。 例如,当您有一个需要恢复的大型状态存储时,如果处理器按默认情况正常启动,则可能会阻止应用程序启动。 如果你正在使用某种活动探测机制(例如在 Kubernetes 上),它可能会认为应用程序已关闭并尝试重新启动。 为了纠正此问题,您可以设置spring.kafka.streams.auto-startupfalse并遵循上述方法。spring-doc.cadn.net.cn

请记住,在使用 Spring Cloud Stream Binder 时,您不是直接处理StreamsBuilderFactoryBean来自 Spring for Apache Kafka,而不是StreamsBuilderFactoryManager,作为StreamsBuilderFactoryBean对象由 Binder 在内部管理。spring-doc.cadn.net.cn