Class ExponentialBackOffDefaultErrorHandler
java.lang.Object
org.springframework.kafka.listener.KafkaExceptionLogLevelAware
org.springframework.kafka.listener.ExceptionClassifier
org.springframework.kafka.listener.FailedRecordProcessor
org.springframework.kafka.listener.FailedBatchProcessor
org.springframework.kafka.listener.DefaultErrorHandler
dev.vality.kafka.common.exception.handler.ExponentialBackOffDefaultErrorHandler
- All Implemented Interfaces:
org.springframework.kafka.listener.CommonErrorHandler,org.springframework.kafka.listener.DeliveryAttemptAware
public class ExponentialBackOffDefaultErrorHandler
extends org.springframework.kafka.listener.DefaultErrorHandler
Сейчас при создании
ConcurrentKafkaListenerContainerFactory в качестве обработчика ошибок мы используем
реализации интерфейса BatchErrorHandler — SeekToCurrentErrorHandler
и SeekToCurrentBatchErrorHandler. В данной библиотеке эти хендлеры наследуют
SeekToCurrentWithSleepBatchErrorHandler и SeekToCurrentWithSleepErrorHandler. В данный момент эти
реализации являются устаревшими, а в spring boot 3 эти классы становятся package private, поэтому мы должны
избавиться от их использования.
Вместо них официальная документация spring предлагает использовать CommonErrorHandler и его реализацию
DefaultErrorHandler.
Данная библиотека предлагает класс ExponentialBackOffDefaultErrorHandler, который наследует
DefaultErrorHandler.
Данный класс ограничивает DefaultErrorHandler использованием только экспоненциально замедляющегося
таймаута для перечитывания оффсета, что в свою очередь поможет не взрывать эластик. Также добавляется отключение
коммита оффсета после обработки хендлером isAckAfterHandle(), а также дополнительное логгирование на
уровне этого хендлера средствами утилит этой библиотеки.
Используйте ExponentialBackOffDefaultErrorHandlerFactory для создания инстанса этого класса
-
Field Summary
Fields inherited from class org.springframework.kafka.listener.FailedRecordProcessor
logger -
Constructor Summary
Constructors Constructor Description ExponentialBackOffDefaultErrorHandler(org.springframework.util.backoff.ExponentialBackOff exponentialBackOff) -
Method Summary
Modifier and Type Method Description voidhandleBatch(Exception thrownException, org.apache.kafka.clients.consumer.ConsumerRecords<?,?> data, org.apache.kafka.clients.consumer.Consumer<?,?> consumer, org.springframework.kafka.listener.MessageListenerContainer container, Runnable invokeListener)voidhandleRemaining(Exception thrownException, List<org.apache.kafka.clients.consumer.ConsumerRecord<?,?>> records, org.apache.kafka.clients.consumer.Consumer<?,?> consumer, org.springframework.kafka.listener.MessageListenerContainer container)booleanisAckAfterHandle()Methods inherited from class org.springframework.kafka.listener.DefaultErrorHandler
deliveryAttemptHeader, handleOtherException, remainingRecords, setAckAfterHandle, setCommitRecoveredMethods inherited from class org.springframework.kafka.listener.FailedBatchProcessor
doHandleMethods inherited from class org.springframework.kafka.listener.FailedRecordProcessor
clearThreadState, deliveryAttempt, getRecoveryStrategy, getSkipPredicate, isCommitRecovered, setBackOffFunction, setResetStateOnExceptionChange, setResetStateOnRecoveryFailure, setRetryListenersMethods inherited from class org.springframework.kafka.listener.ExceptionClassifier
addNotRetryableExceptions, getClassifier, removeNotRetryableException, setClassificationsMethods inherited from class org.springframework.kafka.listener.KafkaExceptionLogLevelAware
getLogLevel, setLogLevelMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.kafka.listener.CommonErrorHandler
clearThreadState, deliveryAttempt, handleRecord
-
Constructor Details
-
ExponentialBackOffDefaultErrorHandler
public ExponentialBackOffDefaultErrorHandler(org.springframework.util.backoff.ExponentialBackOff exponentialBackOff)
-
-
Method Details
-
isAckAfterHandle
public boolean isAckAfterHandle()- Specified by:
isAckAfterHandlein interfaceorg.springframework.kafka.listener.CommonErrorHandler- Overrides:
isAckAfterHandlein classorg.springframework.kafka.listener.DefaultErrorHandler
-
handleRemaining
public void handleRemaining(Exception thrownException, List<org.apache.kafka.clients.consumer.ConsumerRecord<?,?>> records, org.apache.kafka.clients.consumer.Consumer<?,?> consumer, org.springframework.kafka.listener.MessageListenerContainer container)- Specified by:
handleRemainingin interfaceorg.springframework.kafka.listener.CommonErrorHandler- Overrides:
handleRemainingin classorg.springframework.kafka.listener.DefaultErrorHandler
-
handleBatch
public void handleBatch(Exception thrownException, org.apache.kafka.clients.consumer.ConsumerRecords<?,?> data, org.apache.kafka.clients.consumer.Consumer<?,?> consumer, org.springframework.kafka.listener.MessageListenerContainer container, Runnable invokeListener)- Specified by:
handleBatchin interfaceorg.springframework.kafka.listener.CommonErrorHandler- Overrides:
handleBatchin classorg.springframework.kafka.listener.DefaultErrorHandler
-