[英]To achieve concurrency in kafka listener, how are defining consumer groups using groupId & concurrency in @KafkaListener different?
如果一個主題有 > 1 個分區,那么我們可以有一個消費者組,現在這個組中的不同消費者將拆分他們想要讀取的分區。
我們還有一個選項,我們不使用消費者組,但定義並發 = 2(例如),現在消費者的 2 個實例運行每個從不同分區讀取。
這兩個有什么不同? 或者它們在引擎蓋下是一樣的嗎?
是的,我們可以將@KafkaListener
的並發選項視為消費者組成員的數量。 從 Kafka 的角度來看,如果我們只是啟動我們應用程序的另一個實例,那確實是一樣的。
僅當我們進行手動分配時,我們才使用消費者組。 否則,自動生成的@KafkaListener
id
將用作groupId
。 或者拋出異常:
Assert.state(hasGroupIdConsumerConfig || StringUtils.hasText(this.containerProperties.getGroupId()),
"No group.id found in consumer config, container properties, or @KafkaListener annotation; "
+ "a group.id is required when group management is used.");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.