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
- Author:
- Gary Russell
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
FailedRecordProcessor
(BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception> recoverer, BackOff backOff) protected
FailedRecordProcessor
(BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception> recoverer, BackOff backOff, BackOffHandler backOffHandler) -
Method Summary
Modifier and TypeMethodDescriptionvoid
int
deliveryAttempt
(TopicPartitionOffset topicPartitionOffset) Return the next delivery attempt for the topic/partition/offset.protected org.springframework.kafka.listener.FailedRecordTracker
Return the failed record tracker.protected List<RetryListener>
protected boolean
Whether the offset for a recovered record should be committed.boolean
Return whether to seek after an exception is handled.void
setBackOffFunction
(BiFunction<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception, BackOff> backOffFunction) Set a function to dynamically determine theBackOff
to use, based on the consumer record and/or exception.void
setCommitRecovered
(boolean commitRecovered) Set to true to commit the offset for a recovered record.void
setResetStateOnExceptionChange
(boolean resetStateOnExceptionChange) Set to true to reset the retryBackOff
if the exception is a different type to the previous failure for the same record.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.void
setRetryListeners
(RetryListener... listeners) Set one or moreRetryListener
to receive notifications of retries and recovery.void
setSeekAfterError
(boolean seekAfterError) When true (default), the error handler will perform seeks on the failed and/or remaining records to they will be redelivered on the next poll.Methods inherited from class org.springframework.kafka.listener.ExceptionClassifier
addNotRetryableExceptions, addRetryableExceptions, defaultFalse, defaultFalse, defaultFatalExceptionsList, getClassifier, notRetryable, removeClassification, setClassifications
Methods inherited from class org.springframework.kafka.listener.KafkaExceptionLogLevelAware
getLogLevel, setLogLevel
-
Field Details
-
logger
-
-
Constructor Details
-
FailedRecordProcessor
protected FailedRecordProcessor(@Nullable BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception> recoverer, BackOff backOff) -
FailedRecordProcessor
protected FailedRecordProcessor(@Nullable BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?, ?>, Exception> recoverer, BackOff backOff, @Nullable BackOffHandler backOffHandler)
-
-
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, BackOff> backOffFunction) Set a function to dynamically determine theBackOff
to 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 retryBackOff
if the exception is a different type to the previous failure for the same record. ThebackOffFunction
, if provided, will be called to get theBackOff
to use for the new exception; otherwise, the configuredBackOff
will be used. Default true since 2.9; set to false to use the existing retry state, even when exceptions change.- Parameters:
resetStateOnExceptionChange
- true to reset.- Since:
- 2.6.3
-
setRetryListeners
Set one or moreRetryListener
to receive notifications of retries and recovery.- Parameters:
listeners
- the listeners.- Since:
- 2.7
-
getRetryListeners
-
isSeekAfterError
public boolean isSeekAfterError()Return whether to seek after an exception is handled.- Returns:
- true to seek.
- Since:
- 2.9
-
setSeekAfterError
public void setSeekAfterError(boolean seekAfterError) When true (default), the error handler will perform seeks on the failed and/or remaining records to they will be redelivered on the next poll. When false, the container will present the failed and/or remaining records to the listener by pausing the consumer for the next poll and using the existing records from the previous poll. When false; has the side-effect of settingsetResetStateOnExceptionChange(boolean)
to true.- Parameters:
seekAfterError
- false to not perform seeks.- Since:
- 2.9
-
deliveryAttempt
Description copied from interface:DeliveryAttemptAware
Return the next delivery attempt for the topic/partition/offset.- Specified by:
deliveryAttempt
in interfaceDeliveryAttemptAware
- Parameters:
topicPartitionOffset
- the topic/partition/offset.- Returns:
- the next delivery attempt.
-
getFailureTracker
protected org.springframework.kafka.listener.FailedRecordTracker getFailureTracker()Return the failed record tracker.- Returns:
- the tracker.
- Since:
- 2.9
-
clearThreadState
public void clearThreadState()
-