簡體   English   中英

用於從具有相同分區鍵的主題中讀取組中的 kafka 消息的 kafka API

[英]kafka API for Reading kafka messages in a Group from topic with same partition key

我在內部 Kafka 主題中有 500 萬條消息。

1 million  message with Partition key  -1234-Messge1
1 million  message with Partition key  -2345-Messge2
1 million  message with Partition key  -5678-Messge3
1 million  message with Partition key  -6789-Messge4
1 million  message with Partition key  -6565-Messge5

我必須將具有相同 Partitionkey的消息作為單個消息的一部分加入並發送給消費者主題 [例如:對於密鑰1234-Messge1 ,消費者應該收到單個消息而不是 100 萬條消息]

kafka 端是否有可用的 Kafka API,使用它我可以讀取組中具有相同分區鍵的所有消息,而不是像傳統的 spring boot kafka Listener 那樣一次讀取單個消息。

在 Kafka Streams 中,您可以filter特定的記錄鍵,但這會讀取所有分區。 例如,如果您希望所有鍵的邏輯相同,也可以groupByKey ,並且可以從KTable查詢所有值。

如果您已經知道(或可以計算)主題分區,則可以assign (或使用@KafkaListener屬性topicPartitions )以使Consumer讀取一對多的TopicPartition 這仍將讀取該分區的所有記錄,如果您有多個鍵,則需要if (record.key().equals(partitionKey))

並非如此,因為 Kafka 不提供密鑰驅動的 API。 最后(無論您是直接使用 KafkaConsumer 還是 Streams),您都將從您想要的分區中讀取所有記錄。

如果您知道您的記錄在哪個分區中,那么您可以設置消費者從這些分區中讀取。

但是請記住,您可能會受到諸如主題中分區數量增加之類的情況的影響(什么會更改散列函數,除非您使用穩定的散列分區器)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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