Class CommonMixedErrorHandler

java.lang.Object
org.springframework.kafka.listener.CommonMixedErrorHandler
All Implemented Interfaces:
CommonErrorHandler, DeliveryAttemptAware

public class CommonMixedErrorHandler extends Object implements CommonErrorHandler
A CommonErrorHandler that delegates to different CommonErrorHandlers for record and batch listeners.
Since:
2.8
Author:
Gary Russell
  • Constructor Details

    • CommonMixedErrorHandler

      public CommonMixedErrorHandler(CommonErrorHandler recordErrorHandler, CommonErrorHandler batchErrorHandler)
      Construct an instance with the provided delegate CommonErrorHandlers.
      Parameters:
      recordErrorHandler - the error handler for record listeners.
      batchErrorHandler - the error handler for batch listeners.
  • Method Details

    • seeksAfterHandling

      public boolean seeksAfterHandling()
      Description copied from interface: CommonErrorHandler
      Return true if this error handler performs seeks on the failed record and remaining records (or just the remaining records after a failed record is recovered).
      Specified by:
      seeksAfterHandling in interface CommonErrorHandler
      Returns:
      true if the next poll should fetch records.
    • deliveryAttemptHeader

      public boolean deliveryAttemptHeader()
      Description copied from interface: CommonErrorHandler
      Return true if this error handler supports delivery attempts headers.
      Specified by:
      deliveryAttemptHeader in interface CommonErrorHandler
      Returns:
      true if capable.
    • handleOtherException

      public void handleOtherException(Exception thrownException, org.apache.kafka.clients.consumer.Consumer<?,?> consumer, MessageListenerContainer container, boolean batchListener)
      Description copied from interface: CommonErrorHandler
      Called when an exception is thrown with no records available, e.g. if the consumer poll throws an exception.
      Specified by:
      handleOtherException in interface CommonErrorHandler
      Parameters:
      thrownException - the exception.
      consumer - the consumer.
      container - the container.
      batchListener - true if the listener is a batch listener.
    • handleOne

      public boolean handleOne(Exception thrownException, org.apache.kafka.clients.consumer.ConsumerRecord<?,?> record, org.apache.kafka.clients.consumer.Consumer<?,?> consumer, MessageListenerContainer container)
      Description copied from interface: CommonErrorHandler
      Handle the exception for a record listener when CommonErrorHandler.seeksAfterHandling() returns false. Use this to handle just the single failed record.
      Specified by:
      handleOne in interface CommonErrorHandler
      Parameters:
      thrownException - the exception.
      record - the record.
      consumer - the consumer.
      container - the container.
      Returns:
      true if the error was "handled" or false if not and the container will re-submit the record to the listener.
      See Also:
    • handleRemaining

      public void handleRemaining(Exception thrownException, List<org.apache.kafka.clients.consumer.ConsumerRecord<?,?>> records, org.apache.kafka.clients.consumer.Consumer<?,?> consumer, MessageListenerContainer container)
      Description copied from interface: CommonErrorHandler
      Handle the exception for a record listener when CommonErrorHandler.seeksAfterHandling() returns true. The failed record and all the remaining records from the poll are passed in. Usually used when the error handler performs seeks so that the remaining records will be redelivered on the next poll.
      Specified by:
      handleRemaining in interface CommonErrorHandler
      Parameters:
      thrownException - the exception.
      records - the remaining records including the one that failed.
      consumer - the consumer.
      container - the container.
      See Also:
    • handleBatch

      public void handleBatch(Exception thrownException, org.apache.kafka.clients.consumer.ConsumerRecords<?,?> data, org.apache.kafka.clients.consumer.Consumer<?,?> consumer, MessageListenerContainer container, Runnable invokeListener)
      Description copied from interface: CommonErrorHandler
      Handle the exception for a batch listener. The complete ConsumerRecords from the poll is supplied. The error handler needs to perform seeks if you wish to reprocess the records in the batch.
      Specified by:
      handleBatch in interface CommonErrorHandler
      Parameters:
      thrownException - the exception.
      data - the consumer records.
      consumer - the consumer.
      container - the container.
      invokeListener - a callback to re-invoke the listener.
    • 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 CommonErrorHandler
      Specified by:
      deliveryAttempt in interface DeliveryAttemptAware
      Parameters:
      topicPartitionOffset - the topic/partition/offset.
      Returns:
      the next delivery attempt.
    • clearThreadState

      public void clearThreadState()
      Description copied from interface: CommonErrorHandler
      Optional method to clear thread state; will be called just before a consumer thread terminates.
      Specified by:
      clearThreadState in interface CommonErrorHandler
    • isAckAfterHandle

      public boolean isAckAfterHandle()
      Description copied from interface: CommonErrorHandler
      Return true if the offset should be committed for a handled error (no exception thrown).
      Specified by:
      isAckAfterHandle in interface CommonErrorHandler
      Returns:
      true to commit.
    • setAckAfterHandle

      public void setAckAfterHandle(boolean ack)
      Description copied from interface: CommonErrorHandler
      Set to false to prevent the container from committing the offset of a recovered record (when the error handler does not itself throw an exception).
      Specified by:
      setAckAfterHandle in interface CommonErrorHandler
      Parameters:
      ack - false to not commit.