Вы всегда получите все записи после последнего смещения, с которого вы начали, и для всех разделов, назначенных экземпляру потребителя.
Если вы запускаете десять потребителей, вы должны ожидать увидеть только один раздел на экземпляр, но все же все смещения.
Нет настройки для получения только одной записи, поскольку ваши производители должны отправлять только N сообщений равномерно после того, как потребитель начнет их ждать.
Также нет гарантии упорядочения между разделами для экземпляра-потребителя, которому назначено более одного раздела
Однако вы можете использовать TreeMap или данные max-heapструктура для хранения ваших точек данных, затем циклически переберите разделы по порядку и выведите максимально смещенные смещения для каждой
Другими словами, вы в настоящее время распечатываете каждую запись, а не печатаете после всех циклов надразделы, поэтому вы получаете первый показанный вывод
Итак, нет способа делать то, что вы хотите, «в Кафке», но проблема, о которой вы спрашиваете, заключается в том, как вы пакетируете записи, когда выПолучаете их, затем сохраняете только максимум, и, наконец, где вы выводите эту информацию.
Примечание: команда GetOffsetShell
уже может запрашивать наибольшее текущее смещение для всех разделов