java kafka получить смещение сообщения в разделе по уникальному ключу - PullRequest
0 голосов
/ 21 мая 2019

Если все мои сообщения kafka содержат уникальный ключ, каким будет самый быстрый способ запросить смещение сообщения с его уникальным ключом в разделе в посреднике?Предположим, я уже знаю, что это сообщение должно существовать в этом посреднике и в этом разделе.

Один из способов, о которых я могу подумать, например, - это повторная обработка всех сообщений в разделе и остановка, пока не будет найден конкретный ключ.Но если у вас более миллиона сообщений, обработка каждого из них - это действительно пустая трата времени.

Другими словами, есть ли API-интерфейс kafka, который может выполнять эту проверку непосредственно на сервере Kafka?

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Я бы предложил использовать Kafka Streams :

Использовать KStream. transform () и через ProcessorContext получить доступ к смещению сообщения,Затем создайте KTable поверх результата или используйте Интерактивные запросы .

0 голосов
/ 21 мая 2019

Кафка работает, как вы и догадались, читает сообщения последовательно.Вы не можете перейти непосредственно к некоторым записям.Но что вы можете сделать, чтобы сэкономить время, так это создать много разделов для этой темы, затем, имея ключ, вы знаете, что такое раздел (вы должны отгадать его, как узнать номер раздела), и тогда вы будете использовать только этот раздел.Так, скажем, если у вас есть 1 000 000 записей в теме, то, если вы делаете 100 разделов, вам нужно отсканировать только 10 000 записей и найти свои.

...