我在容器工厂上做了autoStartup(false)
,但是不确定应该在哪里注入KafkaListenerEndpointRegistry
。
我不希望用户在构建时进行连接。 Spring Boot应用程序完全启动后,它应该连接Kafka
主题。
最佳答案
您应该使用带有KafkaListenerEndpointRegistry
注释的方法在类中注入KafkaListener
,因为从文档
为@KafkaListener注释创建的侦听器容器不是应用程序上下文中的bean。相反,它们使用KafkaListenerEndpointRegistry类型的基础结构bean注册。
因此,通过使用此KafkaListenerEndpointRegistry
实例,您可以管理容器启动/停止here的生命周期
范例:
@Autowired
private KafkaListenerEndpointRegistry registry;
...
@KafkaListener(id = "myContainer", topics = "myTopic", autoStartup = "false")
public void listen(...) { ... }
...
registry.getListenerContainer("myContainer").start();