Обработка ошибок при загрузке Spring Kafka в пакетном прослушивателеJAVA

Программисты JAVA общаются здесь
Ответить
Гость
 Обработка ошибок при загрузке Spring Kafka в пакетном прослушивателе

Сообщение Гость »

Работаем над загрузочным приложением Spring, где оно слушает тему Kafka, обрабатывает ее и вставляет в БД. В настоящее время мы вручную подтверждаем сообщения и используем пакетный прослушиватель как «истина». Мы получаем пакет из 500 сообщений один раз для обработки, используя «цикл for» для обработки каждого сообщения и помещения в БД, а затем подтверждения сообщения в Kafka.
Я использовал «ExponentialBackOff» для повторных попыток, например, если БД не работает, текущее сообщение из 500 сообщений, следует попытаться выполнить «N» количество раз и, наконец, перейти к «CommonErrorHandler» и зарегистрировать сообщение.
Проблема здесь в том,
Если есть любая ошибка в 500-м событии, снова вся партия из 500 пытается повторно обработать, что неприемлемо.
Чтобы решить эту проблему, начал выдавать «BatchListenerFailedException» с индексом вместо Just "Исключение". Но это создает другую проблему: он не пытается N раз выполнить попытку, как только управление переходит к блоку перехвата с «BatchListenerFailedException», он переходит к общему обработчику ошибок и пропускает событие.
Другая проблема заключается в том, что из 500 записей, если 101-я запись дает сбой, снова обрабатываются 500 записей с самого начала, когда мы вызываем отсрочку, хотя мы уже подтвердили первые 100 сообщений. Как я могу это исправить?
Примечание. Я где-то читал, что, хотя мы указываем «Вручную» или «Немедленно вручную», пакет зафиксирует подтверждение после завершения всех сообщений. Пожалуйста, исправьте.
for(int i=0;i

Подробнее здесь: https://stackoverflow.com/questions/787 ... h-listener
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»