Class FailedRecordProcessor
java.lang.Object
org.springframework.kafka.listener.KafkaExceptionLogLevelAware
org.springframework.kafka.listener.ExceptionClassifier
org.springframework.kafka.listener.FailedRecordProcessor
- All Implemented Interfaces:
DeliveryAttemptAware
- Direct Known Subclasses:
DefaultAfterRollbackProcessor,FailedBatchProcessor
public abstract class FailedRecordProcessor
extends ExceptionClassifier
implements DeliveryAttemptAware
Common super class for classes that deal with failing to consume a consumer record.
- Since:
- 2.3.1
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedFailedRecordProcessor(BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception> recoverer, org.springframework.util.backoff.BackOff backOff) -
Method Summary
Modifier and TypeMethodDescriptionvoidintdeliveryAttempt(TopicPartitionOffset topicPartitionOffset) Return the next delivery attempt for the topic/partition/offset.protected RecoveryStrategygetRecoveryStrategy(List<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>> records, Exception thrownException) Return aRecoveryStrategyto call to determine whether the first record in the list should be skipped.protected booleanWhether the offset for a recovered record should be committed.voidsetBackOffFunction(BiFunction<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception, org.springframework.util.backoff.BackOff> backOffFunction) Set a function to dynamically determine theBackOffto use, based on the consumer record and/or exception.voidsetCommitRecovered(boolean commitRecovered) Set to true to commit the offset for a recovered record.voidsetResetStateOnExceptionChange(boolean resetStateOnExceptionChange) Set to true to reset the retryBackOffif the exception is a different type to the previous failure for the same 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.voidsetRetryListeners(RetryListener... listeners) Set one or moreRetryListenerto receive notifications of retries and recovery.Methods inherited from class org.springframework.kafka.listener.ExceptionClassifier
addNotRetryableExceptions, getClassifier, removeNotRetryableException, setClassificationsMethods inherited from class org.springframework.kafka.listener.KafkaExceptionLogLevelAware
getLogLevel, setLogLevel
-
Field Details
-
logger
protected final org.springframework.core.log.LogAccessor logger
-
-
Constructor Details
-
FailedRecordProcessor
protected FailedRecordProcessor(@Nullable BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception> recoverer, org.springframework.util.backoff.BackOff backOff)
-
-
Method Details
-
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(BiFunction<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, 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
-
setResetStateOnExceptionChange
public void setResetStateOnExceptionChange(boolean resetStateOnExceptionChange) Set to true to reset the retryBackOffif the exception is a different type to the previous failure for the same record. ThebackOffFunction, if provided, will be called to get theBackOffto use for the new exception; otherwise, the configuredBackOffwill be used.- Parameters:
resetStateOnExceptionChange- true to reset.- Since:
- 2.6.3
-
setRetryListeners
Set one or moreRetryListenerto receive notifications of retries and recovery.- Parameters:
listeners- the listeners.- Since:
- 2.7
-
deliveryAttempt
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.
-
getRecoveryStrategy
protected RecoveryStrategy getRecoveryStrategy(List<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>> records, Exception thrownException) Return aRecoveryStrategyto call to determine whether the first record in the list should be skipped.- Parameters:
records- the records.thrownException- the exception.- Returns:
- the
RecoveryStrategy. - Since:
- 2.7
-
clearThreadState
public void clearThreadState()
-