Class FailedBatchProcessor
java.lang.Object
org.springframework.kafka.listener.KafkaExceptionLogLevelAware
org.springframework.kafka.listener.ExceptionClassifier
org.springframework.kafka.listener.FailedRecordProcessor
org.springframework.kafka.listener.FailedBatchProcessor
- All Implemented Interfaces:
DeliveryAttemptAware
- Direct Known Subclasses:
DefaultErrorHandler
Subclass of
FailedRecordProcessor that can process (and recover) a batch. If
the listener throws a BatchListenerFailedException, the offsets prior to the
failed record are committed and the remaining records have seeks performed. When the
retries are exhausted, the failed record is sent to the recoverer instead of being
included in the seeks. If other exceptions are thrown processing is delegated to the
fallback handler.- Since:
- 2.8
- Author:
- Gary Russell, Francois Rosiere
-
Field Summary
Fields inherited from class org.springframework.kafka.listener.FailedRecordProcessor
logger -
Constructor Summary
ConstructorsConstructorDescriptionFailedBatchProcessor(BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception> recoverer, BackOff backOff, BackOffHandler backOffHandler, CommonErrorHandler fallbackHandler) Construct an instance with the provided properties.FailedBatchProcessor(BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception> recoverer, BackOff backOff, CommonErrorHandler fallbackHandler) Construct an instance with the provided properties. -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddoHandle(Exception thrownException, org.apache.kafka.clients.consumer.ConsumerRecords<?, ?> data, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container, Runnable invokeListener) protected CommonErrorHandlerReturn the fallback batch error handler.protected <K,V> org.apache.kafka.clients.consumer.ConsumerRecords<K, V> handle(Exception thrownException, org.apache.kafka.clients.consumer.ConsumerRecords<?, ?> data, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container, Runnable invokeListener) protected voidnotRetryable(Stream<Class<? extends Exception>> notRetryable) Subclasses can override this to receive notification of configuration of not retryable exceptions.removeClassification(Class<? extends Exception> exceptionType) Remove an exception type from the configured list.voidsetClassifications(Map<Class<? extends Throwable>, Boolean> classifications, boolean defaultValue) Set an exception classifications to determine whether the exception should cause a retry (until exhaustion) or not.voidsetLogLevel(KafkaException.Level logLevel) Set the level at which the exception thrown by this handler is logged.voidsetRetryListeners(RetryListener... listeners) Set one or moreRetryListenerto receive notifications of retries and recovery.Methods inherited from class org.springframework.kafka.listener.FailedRecordProcessor
clearThreadState, deliveryAttempt, getFailureTracker, getRetryListeners, isCommitRecovered, isSeekAfterError, setBackOffFunction, setCommitRecovered, setResetStateOnExceptionChange, setResetStateOnRecoveryFailure, setSeekAfterErrorMethods inherited from class org.springframework.kafka.listener.ExceptionClassifier
addNotRetryableExceptions, addRetryableExceptions, defaultFalse, defaultFalse, defaultFatalExceptionsList, getClassifierMethods inherited from class org.springframework.kafka.listener.KafkaExceptionLogLevelAware
getLogLevel
-
Constructor Details
-
FailedBatchProcessor
public FailedBatchProcessor(@Nullable BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception> recoverer, BackOff backOff, CommonErrorHandler fallbackHandler) Construct an instance with the provided properties.- Parameters:
recoverer- the recoverer.backOff- the back off.fallbackHandler- the fall back handler.
-
FailedBatchProcessor
public FailedBatchProcessor(@Nullable BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception> recoverer, BackOff backOff, @Nullable BackOffHandler backOffHandler, CommonErrorHandler fallbackHandler) Construct an instance with the provided properties.- Parameters:
recoverer- the recoverer.backOff- the back off.backOffHandler- theBackOffHandlerfallbackHandler- the fall back handler.- Since:
- 2.9
-
-
Method Details
-
setRetryListeners
Description copied from class:FailedRecordProcessorSet one or moreRetryListenerto receive notifications of retries and recovery.- Overrides:
setRetryListenersin classFailedRecordProcessor- Parameters:
listeners- the listeners.
-
setLogLevel
Description copied from class:KafkaExceptionLogLevelAwareSet the level at which the exception thrown by this handler is logged.- Overrides:
setLogLevelin classKafkaExceptionLogLevelAware- Parameters:
logLevel- the level (default ERROR).
-
notRetryable
Description copied from class:ExceptionClassifierSubclasses can override this to receive notification of configuration of not retryable exceptions.- Overrides:
notRetryablein classExceptionClassifier- Parameters:
notRetryable- the not retryable exceptions.
-
setClassifications
public void setClassifications(Map<Class<? extends Throwable>, Boolean> classifications, boolean defaultValue) Description copied from class:ExceptionClassifierSet an exception classifications to determine whether the exception should cause a retry (until exhaustion) or not. If not, we go straight to the recoverer. By default, the following exceptions will not be retried: All others will be retried. When calling this method, the defaults will not be applied.- Overrides:
setClassificationsin classExceptionClassifier- Parameters:
classifications- the classifications.defaultValue- whether or not to retry non-matching exceptions.- See Also:
-
BinaryExceptionClassifier(Map, boolean)ExceptionClassifier.addNotRetryableExceptions(Class...)
-
removeClassification
Description copied from class:ExceptionClassifierRemove an exception type from the configured list. By default, the following exceptions will not be retried:DeserializationExceptionMessageConversionExceptionConversionExceptionMethodArgumentResolutionExceptionNoSuchMethodExceptionClassCastException
ExceptionClassifier.defaultFalse()has been called.- Overrides:
removeClassificationin classExceptionClassifier- Parameters:
exceptionType- the exception type.- Returns:
- the classification of the exception if removal was successful; null otherwise.
- See Also:
-
getFallbackBatchHandler
Return the fallback batch error handler.- Returns:
- the handler.
- Since:
- 2.8.8
-
doHandle
protected void doHandle(Exception thrownException, org.apache.kafka.clients.consumer.ConsumerRecords<?, ?> data, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container, Runnable invokeListener) -
handle
protected <K,V> org.apache.kafka.clients.consumer.ConsumerRecords<K,V> handle(Exception thrownException, org.apache.kafka.clients.consumer.ConsumerRecords<?, ?> data, org.apache.kafka.clients.consumer.Consumer<?, ?> consumer, MessageListenerContainer container, Runnable invokeListener)
-