亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么使用 containerGroup 會阻止我的其他偵聽器工作?

為什么使用 containerGroup 會阻止我的其他偵聽器工作?

人到中年有點甜 2022-11-30 14:36:05
我的應用程序正在收聽多個主題。其中一些是壓縮主題,用于在內存中加載一些數據。我想先加載這些數據,所以我使用 SmartLifecycle 在其他容器之前手動啟動這些容器。它工作得很好,但為了簡單起見,我嘗試使用 containerGroup@KafkaListener(id = "myId", containerGroup = "compacted", ...)然后在我使用的 SmartLifecycle bean 中:        Collection<MessageListenerContainer> compactedListenerContainers = applicationContext.getBean("compacted", Collection.class);但是一旦我這樣做了,在“啟動”方法完成后,其他容器就永遠不會啟動了。如果我將此行替換為:Collection<MessageListenerContainer> compactedListenerContainers = Arrays.asList(registry.getListenerContainer("myId"));它的工作。知道為什么獲取 containerGroup 的 bean 會阻止所有其他偵聽器工作嗎?知道所有其他 @KafkaListeners 只是由以下定義:@KafkaListener(topics = "myTopic")編輯進一步排查,問題與KafkaListenerEndpointRegistry有關。如果 SmartLifeCycle bean 是使用“KafkaListenerEndpointRegistry”作為依賴項創建的,則應用程序正在運行。即使我根本不使用注冊表。但是,如果在沒有此注冊表的情況下創建 SmartLifeCycle bean,應用程序將失敗。
查看完整描述

1 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

你需要展示你的容器工廠。

我假設您已autoStartup設置為 false,因為您是手動啟動它們。

所以其他人也不會開始;因為您想在壓縮主題加載后啟動它們,只需調用start()端點注冊表,它將啟動其他主題。

或者你可以把其他的放在另一個containerGroup.


查看完整回答
反對 回復 2022-11-30
  • 1 回答
  • 0 關注
  • 85 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號