Смещение и позиция потребителя#
Corax хранит числовое смещение для каждой записи в разделе. Это смещение действует как уникальный идентификатор записи в этом разделе, а также обозначает положение потребителя в разделе.
Например, потребитель, находящийся в позиции 5, потребил записи со смещениями от 0 до 4 и затем получил запись со смещением 5. На самом деле для потребителя существуют два понятия позиции:
Позиция (
position) потребителя определяет смещение следующей выдаваемой записи. Она будет на единицу больше, чем максимальное смещение, которое потребитель наблюдал в этом разделе. Позиция автоматически повышается каждый раз, когда потребитель получает сообщения при вызовеpoll(Duration).Зафиксированная позиция (
committed position) — это последнее смещение, которое было надежно сохранено. В случае сбоя процесса и его перезапуска это будет то смещение, до которого восстановится потребитель. Потребитель может либо периодически автоматически фиксировать смещения, либо контролировать зафиксированную позицию вручную с помощью API-интерфейсов фиксации (например, используяcommitSyncиcommitAsync).
Это различие дает потребителю контроль над тем, когда запись считается потребленной. Более подробное описание приведено ниже.