Как я могу получить данные из определенного смещения в Кафке? - PullRequest
0 голосов
/ 23 января 2019

Я использую клиент kafka-node для публикации и подписки на kafka. Я хочу получить конкретное сообщение определенного смещения.

Я не знаю, как это возможно. Пожалуйста, помогите, если у кого-то есть решение.

Спасибо

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Конечно, в целом это возможно, потому что запрос выборки на низкоуровневом протоколе Кафки позволяет указывать начальное смещение.

Взглянув на библиотеку kafka-node, о которой я немного знаю, я вижу, что с помощью функции addTopics вы можете передавать информацию о теме, а также смещение, с которого вы хотите начать чтение, и вам также нужно установить для параметра fromOffset значение true. Для этого также существует метод setOffset. По ссылке: https://github.com/SOHU-Co/kafka-node#consumer

0 голосов
/ 23 января 2019

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

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

...