Class FailedRecordProcessor
- java.lang.Object
-
- org.springframework.kafka.listener.KafkaExceptionLogLevelAware
-
- org.springframework.kafka.listener.FailedRecordProcessor
-
- All Implemented Interfaces:
DeliveryAttemptAware
- Direct Known Subclasses:
DefaultAfterRollbackProcessor,RecoveringBatchErrorHandler,SeekToCurrentErrorHandler
public abstract class FailedRecordProcessor extends KafkaExceptionLogLevelAware implements DeliveryAttemptAware
Common super class for classes that deal with failing to consume a consumer record.- Since:
- 2.3.1
-
-
Field Summary
Fields Modifier and Type Field Description protected org.springframework.core.log.LogAccessorlogger
-
Constructor Summary
Constructors Modifier Constructor Description protectedFailedRecordProcessor(java.util.function.BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?,?>,java.lang.Exception> recoverer, org.springframework.util.backoff.BackOff backOff)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddNotRetryableException(java.lang.Class<? extends java.lang.Exception> exceptionType)Deprecated.in favor ofaddNotRetryableExceptions(Class...).voidaddNotRetryableExceptions(java.lang.Class<? extends java.lang.Exception>... exceptionTypes)Add exception types to the default list.voidclearThreadState()intdeliveryAttempt(TopicPartitionOffset topicPartitionOffset)Return the next delivery attempt for the topic/partition/offset.protected org.springframework.classify.BinaryExceptionClassifiergetClassifier()Return the exception classifier.protected java.util.function.BiPredicate<org.apache.kafka.clients.consumer.ConsumerRecord<?,?>,java.lang.Exception>getSkipPredicate(java.util.List<org.apache.kafka.clients.consumer.ConsumerRecord<?,?>> records, java.lang.Exception thrownException)protected booleanisCommitRecovered()Whether the offset for a recovered record should be committed.booleanremoveNotRetryableException(java.lang.Class<? extends java.lang.Exception> exceptionType)Remove an exception type from the configured list.voidsetBackOffFunction(java.util.function.BiFunction<org.apache.kafka.clients.consumer.ConsumerRecord<?,?>,java.lang.Exception,org.springframework.util.backoff.BackOff> backOffFunction)Set a function to dynamically determine theBackOffto use, based on the consumer record and/or exception.voidsetClassifications(java.util.Map<java.lang.Class<? extends java.lang.Throwable>,java.lang.Boolean> classifications, boolean defaultValue)Set an exception classifications to determine whether the exception should cause a retry (until exhaustion) or not.voidsetCommitRecovered(boolean commitRecovered)Set to true to commit the offset for a recovered record.voidsetResetStateOnRecoveryFailure(boolean resetStateOnRecoveryFailure)Set to false to immediately attempt to recover on the next attempt instead of repeating the BackOff cycle when recovery fails.-
Methods inherited from class org.springframework.kafka.listener.KafkaExceptionLogLevelAware
getLogLevel, setLogLevel
-
-
-
-
Method Detail
-
getClassifier
protected org.springframework.classify.BinaryExceptionClassifier getClassifier()
Return the exception classifier.- Returns:
- the classifier.
-
setClassifications
public void setClassifications(java.util.Map<java.lang.Class<? extends java.lang.Throwable>,java.lang.Boolean> classifications, boolean defaultValue)Set 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:DeserializationExceptionMessageConversionExceptionMethodArgumentResolutionExceptionNoSuchMethodExceptionClassCastException
- Parameters:
classifications- the classifications.defaultValue- whether or not to retry non-matching exceptions.- See Also:
BinaryExceptionClassifier(Map, boolean),addNotRetryableExceptions(Class...)
-
isCommitRecovered
protected boolean isCommitRecovered()
Whether the offset for a recovered record should be committed.- Returns:
- true to commit recovered record offsets.
-
setCommitRecovered
public void setCommitRecovered(boolean commitRecovered)
Set to true to commit the offset for a recovered record.- Parameters:
commitRecovered- true to commit.
-
setBackOffFunction
public void setBackOffFunction(java.util.function.BiFunction<org.apache.kafka.clients.consumer.ConsumerRecord<?,?>,java.lang.Exception,org.springframework.util.backoff.BackOff> backOffFunction)
Set a function to dynamically determine theBackOffto use, based on the consumer record and/or exception. If null is returned, the default BackOff will be used.- Parameters:
backOffFunction- the function.- Since:
- 2.6
-
setResetStateOnRecoveryFailure
public void setResetStateOnRecoveryFailure(boolean resetStateOnRecoveryFailure)
Set to false to immediately attempt to recover on the next attempt instead of repeating the BackOff cycle when recovery fails.- Parameters:
resetStateOnRecoveryFailure- false to retain state.- Since:
- 2.5.5
-
deliveryAttempt
public int deliveryAttempt(TopicPartitionOffset topicPartitionOffset)
Description copied from interface:DeliveryAttemptAwareReturn the next delivery attempt for the topic/partition/offset.- Specified by:
deliveryAttemptin interfaceDeliveryAttemptAware- Parameters:
topicPartitionOffset- the topic/partition/offset.- Returns:
- the next delivery attempt.
-
addNotRetryableException
@Deprecated public void addNotRetryableException(java.lang.Class<? extends java.lang.Exception> exceptionType)
Deprecated.in favor ofaddNotRetryableExceptions(Class...).Add an exception type to the default list. By default, the following exceptions will not be retried:DeserializationExceptionMessageConversionExceptionConversionExceptionMethodArgumentResolutionExceptionNoSuchMethodExceptionClassCastException
- Parameters:
exceptionType- the exception type.- See Also:
removeNotRetryableException(Class),setClassifications(Map, boolean)
-
addNotRetryableExceptions
@SafeVarargs public final void addNotRetryableExceptions(java.lang.Class<? extends java.lang.Exception>... exceptionTypes)
Add exception types to the default list. By default, the following exceptions will not be retried:DeserializationExceptionMessageConversionExceptionConversionExceptionMethodArgumentResolutionExceptionNoSuchMethodExceptionClassCastException
- Parameters:
exceptionTypes- the exception types.- Since:
- 2.6
- See Also:
removeNotRetryableException(Class),setClassifications(Map, boolean)
-
removeNotRetryableException
public boolean removeNotRetryableException(java.lang.Class<? extends java.lang.Exception> exceptionType)
Remove an exception type from the configured list. By default, the following exceptions will not be retried:DeserializationExceptionMessageConversionExceptionConversionExceptionMethodArgumentResolutionExceptionNoSuchMethodExceptionClassCastException
- Parameters:
exceptionType- the exception type.- Returns:
- true if the removal was successful.
- See Also:
addNotRetryableExceptions(Class...),setClassifications(Map, boolean)
-
getSkipPredicate
protected java.util.function.BiPredicate<org.apache.kafka.clients.consumer.ConsumerRecord<?,?>,java.lang.Exception> getSkipPredicate(java.util.List<org.apache.kafka.clients.consumer.ConsumerRecord<?,?>> records, java.lang.Exception thrownException)
-
clearThreadState
public void clearThreadState()
-
-