簡體   English   中英

要在 kafka 偵聽器中實現並發,在 @KafkaListener 中使用 groupId 和並發來定義消費者組有何不同?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM