Смещение и позиция потребителя#

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

Например, потребитель, находящийся в позиции 5, потребил записи со смещениями от 0 до 4 и затем получил запись со смещением 5. На самом деле для потребителя существуют два понятия позиции:

  1. Позиция (position) потребителя определяет смещение следующей выдаваемой записи. Она будет на единицу больше, чем максимальное смещение, которое потребитель наблюдал в этом разделе. Позиция автоматически повышается каждый раз, когда потребитель получает сообщения при вызове poll(Duration).

  2. Зафиксированная позиция (committed position) — это последнее смещение, которое было надежно сохранено. В случае сбоя процесса и его перезапуска это будет то смещение, до которого восстановится потребитель. Потребитель может либо периодически автоматически фиксировать смещения, либо контролировать зафиксированную позицию вручную с помощью API-интерфейсов фиксации (например, используя commitSync и commitAsync).

Это различие дает потребителю контроль над тем, когда запись считается потребленной. Более подробное описание приведено ниже.