java为什么使用containerGroup会阻止我的其他侦听器工作?
我的应用程序正在收听几个主题。 其中一些是压缩主题,用于在内存中加载一些数据
我想加载first thoses数据,所以我使用SmartLifecycle在其他容器之前手动启动这些容器
它工作得很好,但为了简单起见,我尝试使用containerGroup
@KafkaListener(id = "myId", containerGroup = "compacted", ...)
然后在我使用的SmartLifecycle bean中:
Collection<MessageListenerContainer> compactedListenerContainers = applicationContext.getBean("compacted", Collection.class);
但一旦我这样做了,“start”方法完成后,其他容器就永远不会启动
如果我将这一行替换为:
Collection<MessageListenerContainer> compactedListenerContainers = Arrays.asList(registry.getListenerContainer("myId"));
它起作用了
知道为什么为containerGroup获取bean会阻止所有其他侦听器工作吗?知道所有其他@kafkalistener的定义如下:
@KafkaListener(topics = "myTopic")
编辑
经过进一步调查,该问题与卡夫卡利斯特登记处有关
如果SmartLifeCycle bean是以“KafkaListenerEndpointRegistry”作为依赖项创建的,则应用程序正在工作。即使我根本不使用注册表
但是,如果创建的SmartLifeCycle bean没有这个注册表,应用程序就会失败
共 (0) 个答案