Кафка - читать пачку сообщений - PullRequest
0 голосов
/ 04 июля 2018

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

1) Если это гарантировано, что никакие другие сообщения не будут генерироваться во время работы, как я могу понять, что работа завершена и все сообщения, созданные работой, были использованы? (с учетом нескольких разделов и асинхронности).

2) Если НЕ гарантировано, что никакие другие сообщения не будут генерироваться во время работы, я думаю, шум может быть пропущен.

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

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

Вы можете использовать endOffsets(), чтобы получить последние смещения всех разделов, а затем перебрать все из них после каждого сообщения, чтобы проверить, соответствуют ли все текущие смещения конечным смещениям. Если все совпадения, вы достигли конца.

0 голосов
/ 04 июля 2018

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

...