Чтение из топика#

Основной сценарий#

  1. Потребитель подписывается на топик.

  2. Определяется группа потребителей (Consumer Group).

  3. Corax назначает потребителям партиции (ревизия).

  4. Потребитель запрашивает сообщения, начиная со смещения (offset).

  5. Corax возвращает порцию сообщений.

  6. Потребитель обрабатывает сообщения.

  7. Corax фиксирует смещение (commit offset) в период, указанный в параметре auto.commit.interval.ms.

Альтернативный сценарий: чтение с начала (earliest)#

4а. Потребитель читает все сообщения с самого начала топика (auto.offset.reset = earliest).

Альтернативный сценарий: чтение с последнего (latest)#

4б. Потребитель читает только новые сообщения (auto.offset.reset = latest).

Альтернативный сценарий: ручное подтверждение offset#

7в. Потребитель отправляет команду фиксации offset (commitSync()).

Исключительные сценарии#

Топик не найден#

1г. Потребитель пытается подписаться на несуществующий топик. 3г. Потребителю возвращается ошибка: UnknownTopicOrPartitionException.

Сбой при фиксации offset#

7д. При ручном коммите возвращается ошибка CommitFailedException.

Десериализация не удалась#

6е. Потребитель не может расшифровать сообщение (неправильный формат). Ошибка: DeserializationException.

Ребалансировка (rebalance)#

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