Представляем поддержку потреби... Заметка
RSS Весна

Представляем поддержку потребителей Share (очереди Kafka) в Spring для Apache Kafka

Apache Kafka 4.0.0 представляет Share Groups как новую модель потребления наряду с традиционными группами потребителей. Share Groups распределяют отдельные записи, а не целые разделы, обеспечивая распределение на уровне записей для повышения гибкости. Это отличается от традиционных групп потребителей, где разделы назначаются конкретным потребителям, гарантируя порядок внутри этих разделов. Share Groups идеально подходят для больших объемов независимых событий, где приоритетом является пропускная способность, а не последовательность. Они также предлагают преимущества динамического масштабирования для рабочих нагрузок с переменным спросом. Традиционные группы потребителей остаются важными, когда обработка порядка критична или для обработки с сохранением состояния, требующей привязки к разделу. В Share Groups координатор общего доступа на уровне брокера управляет распределением записей. Записи приобретаются потребителями с временной блокировкой и автоматически возвращаются в пул, если не подтверждены в течение таймаута. Потребители могут подтверждать записи как ACCEPT (принять), RELEASE (освободить) для повторной попытки или REJECT (отклонить) для окончательного сбоя. Брокер отслеживает попытки доставки, автоматически архивируя сообщения после настроенного лимита для защиты от "отравленных" сообщений. Spring for Apache Kafka 4.0.0 полностью поддерживает Share Groups, предлагая как программное создание контейнеров, так и настройку @KafkaListener на основе аннотаций. Необходимо настроить ShareConsumerFactory и ShareKafkaListenerContainerFactory. Поддерживаются как неявные, так и явные режимы подтверждения. Неявное подтверждение автоматически принимает при успешном завершении метода и отклоняет при исключениях, в то время как явное подтверждение позволяет детально управлять с помощью параметра ShareAcknowledgment. Однако явное подтверждение требует, чтобы все записи были подтверждены, прежде чем можно будет опросить новые записи. Share Groups также позволяют масштабироваться с параллелизмом внутри одного контейнера, позволяя нескольким потокам потребителей обрабатывать записи параллельно.