Как будет себя вести Кафка ...?

Я застрял в типичном варианте использования или сценарии, когда я не уверен, как будет себя вести Kafka ..

SCENERIO : I am using Spring Kafka with spring Boot. In my application I am having one Rest end point which will read all messages from the beginning of a topic to check for the duplication of message then write to topic if not duplicate.

Я не понимаю, каким будет поведение приложения при развертывании нескольких экземпляров одного и того же микросервиса и перемещении смещения для операции seekFromBegining.

у меня в голове несколько вопросов:

do reading from beginning of a topic (with the help of seek) block the topic ?
If Yes. then how to solve this typical use case where we have to validate for the 
duplication of message before writing to the topic.

Использование БД не является решением, потому что это требует значительных ресурсов. и замедлить работу приложения.

Спасибо всем заранее

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
0
110
1

Ответы 1

Похоже, вам нужна функция Сжатие журнала:

Log compaction ensures that Kafka will always retain at least the last known value for each message key within the log of data for a single topic partition.

Поэтому, когда вы указываете несколько уникальных message key, у вас не будет больше одного из них в разделе. И при этом вам вообще не нужно читать тему перед сохранением.

Да, мы используем ключи при записи в Kafka Topics. Означает ли это, что тема не будет заблокирована одним экземпляром при чтении.

adhikari 21.06.2018 17:03

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

Artem Bilan 21.06.2018 17:05

Спасибо !!! Я обязательно рассмотрю функцию сжатия журнала. это также может помочь нам удалить дубликаты. но проверка необходима, чтобы приложение, использующее конечную точку отдыха, получало уведомление о дублировании сообщения.

adhikari 21.06.2018 17:09

Блокировок по теме нет. Вы просто создаете KafkaConsumer с уникальной группой потребителей каждый раз и используете auto.offset.reset как earliest. Таким образом, эта новая группа всегда будет читать тему с самого начала и никогда не будет сталкиваться с другими группами по той же теме. Но функция сжатия журналов по-прежнему будет. Это уже функция производителя, а не потребителя.

Artem Bilan 21.06.2018 17:14

Другие вопросы по теме