Несколько разделов Kafka Streams зависли в обработке — исправлено после перезапуска

1
6

Использование Kafka Streams 2.6.2 и запуск агрегаций с отслеживанием состояния с семантикой Exactly once.

Логика обработки такова:

потребление входных записей -> промежуточные агрегированные и буферные данные в хранилище состояний, поддерживаемые темой журнала изменений -> пунктуация каждые 15 секунд - очистка хранилища состояний и отправка агрегированных записей вниз по течению -> окончательная операция агрегирования и отправка в выходную тему

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

Мы заметили исключения ProducerFenced:

org.apache.kafka.common.errors.ProducerFencedException: Producer попытался выполнить

операцию со старой эпохой. Либо есть более новый производитель с тем же transactionalId, либо транзакция производителя была просрочена брокером.

После этого несколько разделов зависли, и записи не были обработаны, пока мы не перезапустили приложение.

Мы настроили:

transaction.timeout.ms на 30 секунд

session.timeout.ms на 30 секунд

Не могли бы вы посоветовать, есть ли какое-либо известное исправление для этого пограничного случая?

Не уверен, поможет ли дальнейшее обновление transaction.timeout.ms или уменьшение интервала между знаками препинания?

Евстафий
Вопрос задан2 июля 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.