Class CompositeRecordInterceptor<K,V>

java.lang.Object
org.springframework.kafka.listener.CompositeRecordInterceptor<K,V>
Type Parameters:
K - the key type.
V - the value type.
All Implemented Interfaces:
RecordInterceptor<K,V>, ThreadStateProcessor

public class CompositeRecordInterceptor<K,V> extends Object implements RecordInterceptor<K,V>
A RecordInterceptor that delegates to one or more RecordInterceptors in order.
Since:
2.3
Author:
Artem Bilan, Gary Russell
  • Constructor Details

    • CompositeRecordInterceptor

      @SafeVarargs public CompositeRecordInterceptor(RecordInterceptor<K,V>... delegates)
      Construct an instance with the provided delegates.
      Parameters:
      delegates - the delegates.
  • Method Details

    • intercept

      @Nullable public org.apache.kafka.clients.consumer.ConsumerRecord<K,V> intercept(org.apache.kafka.clients.consumer.ConsumerRecord<K,V> record, org.apache.kafka.clients.consumer.Consumer<K,V> consumer)
      Description copied from interface: RecordInterceptor
      Perform some action on the record or return a different one. If null is returned the record will be skipped. Invoked before the listener. IMPORTANT; if this method returns a different record, the topic, partition and offset must not be changed to avoid undesirable side-effects.

      IMPORTANT: If transactions are being used, and this method throws an exception, it cannot be used with the container's interceptBeforeTx property set to true.

      Specified by:
      intercept in interface RecordInterceptor<K,V>
      Parameters:
      record - the record.
      consumer - the consumer.
      Returns:
      the record or null.
    • success

      public void success(org.apache.kafka.clients.consumer.ConsumerRecord<K,V> record, org.apache.kafka.clients.consumer.Consumer<K,V> consumer)
      Description copied from interface: RecordInterceptor
      Called after the listener exits normally.
      Specified by:
      success in interface RecordInterceptor<K,V>
      Parameters:
      record - the record.
      consumer - the consumer.
    • failure

      public void failure(org.apache.kafka.clients.consumer.ConsumerRecord<K,V> record, Exception exception, org.apache.kafka.clients.consumer.Consumer<K,V> consumer)
      Description copied from interface: RecordInterceptor
      Called after the listener throws an exception.
      Specified by:
      failure in interface RecordInterceptor<K,V>
      Parameters:
      record - the record.
      exception - the exception.
      consumer - the consumer.
    • setupThreadState

      public void setupThreadState(org.apache.kafka.clients.consumer.Consumer<?,?> consumer)
      Description copied from interface: ThreadStateProcessor
      Call to set up thread-bound resources which will be available for the entire duration of enclosed operation involving a Consumer.
      Specified by:
      setupThreadState in interface ThreadStateProcessor
      Parameters:
      consumer - the consumer.
    • clearThreadState

      public void clearThreadState(org.apache.kafka.clients.consumer.Consumer<?,?> consumer)
      Description copied from interface: ThreadStateProcessor
      Call to clear thread-bound resources which were set up in ThreadStateProcessor.setupThreadState(Consumer).
      Specified by:
      clearThreadState in interface ThreadStateProcessor
      Parameters:
      consumer - the consumer.
    • afterRecord

      public void afterRecord(org.apache.kafka.clients.consumer.ConsumerRecord<K,V> record, org.apache.kafka.clients.consumer.Consumer<K,V> consumer)
      Description copied from interface: RecordInterceptor
      Specified by:
      afterRecord in interface RecordInterceptor<K,V>
      Parameters:
      record - the record.
      consumer - the consumer.