Приложение Kafka Streaming читает только последнее сообщение после соединения с Kafka - PullRequest
0 голосов
/ 10 мая 2018

Мы используем библиотеку Kafka Streaming для создания системы уведомлений в режиме реального времени для входящих сообщений по теме Kafka, поэтому, пока запущено потоковое приложение, оно обрабатывает все входящие сообщения в теме в режиме реального времени и отправляет уведомления, если встретится определенный вид предварительно определенного входящего сообщения.

Если в случае, если потоковое приложение не работает и оно запускается снова, нам требуется обрабатывать только последние сообщения, поступающие после инициализации потокового приложения. Это сделано для того, чтобы избежать обработки старых записей, которые не были обработаны, когда потоковое приложение не работало или не работало. По умолчанию потоковое приложение начинает обработку старых сообщений с момента последнего принятого смещения. Есть ли в Kafka Streaming App какие-либо настройки, позволяющие обрабатывать только самые последние сообщения?

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Ваше предположение верно. Даже если вы установили auto.offset.reset на latest, у вашего приложения уже есть потребительское смещение.

Таким образом, вам придется сбросить смещения до последних с помощью команды kafka-consumer-groups с этими параметрами --reset-offsets --to-latest --execute.

Проверьте различные сценарии сброса, вы даже можете сбросить на конкретную дату или время, из файла и т. Д.

0 голосов
/ 10 мая 2018

Значение по умолчанию для KafkaConsumer 'auto.offset.reset' равно 'last' но вы хотите использовать KafkaStreams, по умолчанию «самое раннее» ссылка: https://github.com/apache/kafka/blob/trunk/streams/src/main/java/org/apache/kafka/streams/StreamsConfig.java#L634

Таким образом, если установлено значение auto.offset.reset «последнее», это будет то, что вы хотите.

...