Возможно ли потребительские сообщения Кафки после приезда? - PullRequest
0 голосов
/ 10 января 2019

Я бы хотел использовать события из темы кафки после времени их прибытия. Время, в которое я хочу, чтобы событие использовалось, находится в полезной нагрузке сообщения. Можно ли добиться чего-то подобного в Кафке? Каковы недостатки этого?

Практический пример: сообщение M создается в 12:10, приходит к моей теме кафки в 12:11, и я хочу, чтобы потребитель опрашивал его в 12:41 (через 30 минут после прибытия)

1 Ответ

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

Кафка имеет срок хранения по умолчанию для всех тем в течение 7 дней. Поэтому вы можете в любой момент потреблять до недели данных, недостатком которых является насыщение сети, если вы постоянно это делаете.

Если вы хотите использовать данные, которые не соответствуют последнему смещению, то для любой новой группы потребителей вы должны установить auto.offset.reset=earliest. В противном случае для существующих групп вам потребуется использовать команду kafka-consumer-groups --reset, чтобы повторно использовать уже использованную запись.

Иногда вы можете захотеть начать с начала темы, например, если у вас есть сжатая тема, чтобы восстановить «дельты» данных в теме - ищите «Двойственность потока / таблицы»

Время, в которое я хочу, чтобы событие использовалось, находится в полезной нагрузке сообщения

Начиная с KIP-32 , каждое сообщение имеет временную метку вне полезной нагрузки, кстати

Я хочу, чтобы потребитель опросил его ... (через 30 минут после прибытия)

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

Нет способа точно контролировать , когда , что случается иначе, чем фактически сделать вашего потребителя в это время, например, через 30 минут. Вы можете играть с max.poll.records и max.poll.interval.ms, но я считаю, что что-то больше, чем несколько секунд, на самом деле не подходит для Кафки.

Например, вы могли бы предпочесть TimerTask вокруг потока потребителя или Spark или MapReduce, запланированные с задачей Oozie / Airflow, которая считывает максимальное количество записей.

...