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