|
对于最新稳定版本,请使用 Spring for Apache Kafka 4.0.0! |
@KafkaListener生命周期管理
为 创建的监听器容器@KafkaListener在应用语境中,注释不是豆子。
相反,它们会注册在某种基础设施机构KafkaListenerEndpointRegistry.
该 bean 由框架自动声明,并管理容器的生命周期;它会自动启动所有自动启动设置为true.
所有集装箱工厂制造的集装箱必须在同一集装箱中阶段.
更多信息请参见“监听器容器自动启动”。
你可以用注册表程序管理生命周期。
启动或停止注册表会启动或停止所有注册容器。
或者,你可以通过使用其身份证属性。
你可以设置自动启动在注释上,它覆盖了容器工厂中配置的默认设置。
你可以从应用上下文中获取豆子的引用,比如自动接线,以管理其注册容器。
以下示例展示了如何实现:
@KafkaListener(id = "myContainer", topics = "myTopic", autoStartup = "false")
public void listen(...) { ... }
@Autowired
private KafkaListenerEndpointRegistry registry;
...
this.registry.getListenerContainer("myContainer").start();
...
注册表只维护其所管理容器的生命周期;被声明为 Beans 的容器不由注册表管理,可以从应用上下文中获取。
可以通过调用注册表获得一组受管理容器getListenerContainers()方法。
2.2.5 版本增加了一种便捷方法getAllListenerContainers()返回所有容器的集合,包括注册管理的容器和被声明为豆子的容器。
返回的集合会包含已初始化的原型豆,但不会初始化任何懒惰豆声明。
在应用上下文刷新后注册的端点将立即启动,无论它们的终端如何自动启动财产,以符合SmartLifecycle合同,其中自动启动仅在应用上下文初始化时考虑。
迟注册的一个例子是具有@KafkaListener在原型作用域中,实例是在上下文初始化后创建的。
从2.8.7版本开始,你可以设置注册表alwaysStartAfterRefresh属性到false然后容器自动启动属性将决定容器是否被启动。 |