对于最新的稳定版本,请使用 spring-cloud-stream 4.3.0! |
手动启动 Kafka Streams 处理器
Spring Cloud Stream Kafka Streams 绑定器提供了一个名为StreamsBuilderFactoryManager
在StreamsBuilderFactoryBean
来自 Apache Kafka 的 Spring。
此管理器 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 绑定器时,您不会直接处理StreamsBuilderFactoryBean
来自 Apache Kafka 的 Spring,而不是StreamsBuilderFactoryManager
,作为StreamsBuilderFactoryBean
对象由活页夹在内部管理。