Я хотел бы реализовать пользовательскую стратегию отступления повторной попытки, основанную на исключении, добавленном в пакетном потребителе. Infinety. }) , как объяснено в документации Spring Kafka. Однако при использовании пакетного слушателя, кажется, его игнорируют и не применяет пользовательскую отступление повторной попытки на основе исключения. Вместо этого он применяет конфигурацию по умолчанию для всех исключений (максимум 10 повторений). < /P>
Конфигурация, которую я пробовал, заключается в следующем: < /p>
Код: Выделить всё
DefaultErrorHandler handler = new DefaultErrorHandler();
handler.setBackOffFunction((record, exception) -> {
if (exception instanceof InfiniteRetryableException) {
return new FixedBackOff(1000L, FixedBackOff.UNLIMITED_ATTEMPTS);
}
else if (exception instanceof LimitedRetryableException) {
return new FixedBackOff(1000L, 5L);
}
return null;
});
- Являются ли пользовательские повторные перерывы на основе исключений, поддерживаемых для партийных слушателей?
- Если они поддерживаются, как я могу их реализовать? />
После дальнейшего расследования я обнаружил, что проблема возникает при использовании исключений, которые не расширяют PactlistenerEderedException, которое специально предназначено для предотвращения повторения всей партии. Как только я обновил два пользовательских исключения, чтобы унаследовать от pactlistenerfailedException, все начало работать, как и ожидалось.
Подробнее здесь: https://stackoverflow.com/questions/795 ... h-consumer