Class FailedRecordProcessor

    • Field Detail

      • logger

        protected final org.springframework.core.log.LogAccessor logger
    • Constructor Detail

      • FailedRecordProcessor

        protected FailedRecordProcessor​(@Nullable
                                        java.util.function.BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?,​?>,​java.lang.Exception> recoverer,
                                        org.springframework.util.backoff.BackOff backOff)
      • FailedRecordProcessor

        protected FailedRecordProcessor​(@Nullable
                                        java.util.function.BiConsumer<org.apache.kafka.clients.consumer.ConsumerRecord<?,​?>,​java.lang.Exception> recoverer,
                                        org.springframework.util.backoff.BackOff backOff,
                                        @Nullable
                                        BackOffHandler backOffHandler)
    • Method Detail

      • 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 the BackOff 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 retry BackOff if the exception is a different type to the previous failure for the same record. The backOffFunction, if provided, will be called to get the BackOff to use for the new exception; otherwise, the configured BackOff 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

        public void setRetryListeners​(RetryListener... listeners)
        Set one or more RetryListener to receive notifications of retries and recovery.
        Parameters:
        listeners - the listeners.
        Since:
        2.7
      • getRetryListeners

        protected java.util.List<RetryListener> 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 setting setResetStateOnExceptionChange(boolean) to true.
        Parameters:
        seekAfterError - false to not perform seeks.
        Since:
        2.9
      • deliveryAttempt

        public int deliveryAttempt​(TopicPartitionOffset topicPartitionOffset)
        Description copied from interface: DeliveryAttemptAware
        Return the next delivery attempt for the topic/partition/offset.
        Specified by:
        deliveryAttempt in interface DeliveryAttemptAware
        Parameters:
        topicPartitionOffset - the topic/partition/offset.
        Returns:
        the next delivery attempt.
      • getRecoveryStrategy

        @Deprecated
        protected RecoveryStrategy getRecoveryStrategy​(java.util.List<org.apache.kafka.clients.consumer.ConsumerRecord<?,​?>> records,
                                                       java.lang.Exception thrownException)
        Deprecated.
        - no longer used.
        Return a RecoveryStrategy to 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
      • getRecoveryStrategy

        @Deprecated
        protected RecoveryStrategy getRecoveryStrategy​(java.util.List<org.apache.kafka.clients.consumer.ConsumerRecord<?,​?>> records,
                                                       @Nullable
                                                       org.apache.kafka.clients.consumer.Consumer<?,​?> recoveryConsumer,
                                                       java.lang.Exception thrownException)
        Deprecated.
        - no longer used.
        Return a RecoveryStrategy to call to determine whether the first record in the list should be skipped.
        Parameters:
        records - the records.
        recoveryConsumer - the consumer.
        thrownException - the exception.
        Returns:
        the RecoveryStrategy.
        Since:
        2.8.4
      • getFailureTracker

        protected org.springframework.kafka.listener.FailedRecordTracker getFailureTracker()
        Return the failed record tracker.
        Returns:
        the tracker.
        Since:
        2.9
      • clearThreadState

        public void clearThreadState()