Кафка имеет срок хранения по умолчанию для всех тем в течение 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, которая считывает максимальное количество записей.