Class AbstractKafkaListenerEndpoint<K,V>

java.lang.Object
org.springframework.kafka.config.AbstractKafkaListenerEndpoint<K,V>
Type Parameters:
K - the key type.
V - the value type.
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.InitializingBean, KafkaListenerEndpoint
Direct Known Subclasses:
MethodKafkaListenerEndpoint

public abstract class AbstractKafkaListenerEndpoint<K,V> extends Object implements KafkaListenerEndpoint, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.InitializingBean
Base model for a Kafka listener endpoint.
See Also:
  • Constructor Details

    • AbstractKafkaListenerEndpoint

      public AbstractKafkaListenerEndpoint()
  • Method Details

    • setBeanFactory

      public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory) throws org.springframework.beans.BeansException
      Specified by:
      setBeanFactory in interface org.springframework.beans.factory.BeanFactoryAware
      Throws:
      org.springframework.beans.BeansException
    • getBeanFactory

      protected @Nullable org.springframework.beans.factory.BeanFactory getBeanFactory()
    • getResolver

      protected @Nullable org.springframework.beans.factory.config.BeanExpressionResolver getResolver()
    • getBeanExpressionContext

      protected @Nullable org.springframework.beans.factory.config.BeanExpressionContext getBeanExpressionContext()
    • getBeanResolver

      protected @Nullable org.springframework.expression.BeanResolver getBeanResolver()
    • setId

      public void setId(@Nullable String id)
    • setMainListenerId

      public void setMainListenerId(@Nullable String id)
    • getMainListenerId

      public @Nullable String getMainListenerId()
      Description copied from interface: KafkaListenerEndpoint
      Return the main listener id if this container is for a retry topic.
      Specified by:
      getMainListenerId in interface KafkaListenerEndpoint
      Returns:
      the main listener id or null.
    • getId

      public @Nullable String getId()
      Description copied from interface: KafkaListenerEndpoint
      Return the id of this endpoint.
      Specified by:
      getId in interface KafkaListenerEndpoint
      Returns:
      the id of this endpoint. The id can be further qualified when the endpoint is resolved against its actual listener container.
      See Also:
    • setGroupId

      public void setGroupId(@Nullable String groupId)
      Set the group id to override the group.id property in the ContainerFactory.
      Parameters:
      groupId - the group id.
      Since:
      1.3
    • getGroupId

      public @Nullable String getGroupId()
      Description copied from interface: KafkaListenerEndpoint
      Return the groupId of this endpoint - if present, overrides the group.id property of the consumer factory.
      Specified by:
      getGroupId in interface KafkaListenerEndpoint
      Returns:
      the group id; may be null.
    • setTopics

      public void setTopics(String... topics)
      Set the topics to use. Either these or 'topicPattern' or 'topicPartitions' should be provided, but not a mixture.
      Parameters:
      topics - to set.
      See Also:
    • getTopics

      public Collection<String> getTopics()
      Return the topics for this endpoint.
      Specified by:
      getTopics in interface KafkaListenerEndpoint
      Returns:
      the topics for this endpoint.
    • setTopicPartitions

      public void setTopicPartitions(TopicPartitionOffset... topicPartitions)
      Set the topicPartitions to use. Either this or 'topic' or 'topicPattern' should be provided, but not a mixture.
      Parameters:
      topicPartitions - to set.
      Since:
      2.3
      See Also:
    • getTopicPartitionsToAssign

      public TopicPartitionOffset @Nullable [] getTopicPartitionsToAssign()
      Return the topicPartitions for this endpoint.
      Specified by:
      getTopicPartitionsToAssign in interface KafkaListenerEndpoint
      Returns:
      the topicPartitions for this endpoint.
      Since:
      2.3
    • setTopicPattern

      public void setTopicPattern(@Nullable Pattern topicPattern)
      Set the topic pattern to use. Cannot be used with topics or topicPartitions.
      Parameters:
      topicPattern - the pattern
      See Also:
    • getTopicPattern

      public @Nullable Pattern getTopicPattern()
      Return the topicPattern for this endpoint.
      Specified by:
      getTopicPattern in interface KafkaListenerEndpoint
      Returns:
      the topicPattern for this endpoint.
    • getGroup

      public @Nullable String getGroup()
      Description copied from interface: KafkaListenerEndpoint
      Return the group of this endpoint or null if not in a group.
      Specified by:
      getGroup in interface KafkaListenerEndpoint
      Returns:
      the group of this endpoint or null if not in a group.
    • setGroup

      public void setGroup(@Nullable String group)
      Set the group for the corresponding listener container.
      Parameters:
      group - the group.
    • isBatchListener

      public boolean isBatchListener()
      Return true if this endpoint creates a batch listener.
      Returns:
      true for a batch listener.
      Since:
      1.1
    • getBatchListener

      public @Nullable Boolean getBatchListener()
      Return the current batch listener flag for this endpoint, or null if not explicitly set.
      Specified by:
      getBatchListener in interface KafkaListenerEndpoint
      Returns:
      the batch listener flag.
      Since:
      2.8
    • setBatchListener

      public void setBatchListener(boolean batchListener)
      Set to true if this endpoint should create a batch listener.
      Parameters:
      batchListener - true for a batch listener.
      Since:
      1.1
    • setShareConsumer

      public void setShareConsumer(boolean shareConsumer)
    • isShareConsumer

      public boolean isShareConsumer()
      Return true if this endpoint is for a share consumer.
      Returns:
      true for a share consumer endpoint.
      Since:
      4.0
    • setReplyTemplate

      public void setReplyTemplate(KafkaTemplate<?,?> replyTemplate)
      Set the KafkaTemplate to use to send replies.
      Parameters:
      replyTemplate - the template.
      Since:
      2.0
    • getReplyTemplate

      protected @Nullable KafkaTemplate<?,?> getReplyTemplate()
    • getRecordFilterStrategy

      protected @Nullable RecordFilterStrategy<? super K, ? super V> getRecordFilterStrategy()
    • setRecordFilterStrategy

      public void setRecordFilterStrategy(RecordFilterStrategy<? super K, ? super V> recordFilterStrategy)
      Set a RecordFilterStrategy implementation.
      Parameters:
      recordFilterStrategy - the strategy implementation.
    • isAckDiscarded

      protected boolean isAckDiscarded()
    • setAckDiscarded

      public void setAckDiscarded(boolean ackDiscarded)
      Set to true if the setRecordFilterStrategy(RecordFilterStrategy) should ack discarded messages.
      Parameters:
      ackDiscarded - the ackDiscarded.
    • getClientIdPrefix

      public @Nullable String getClientIdPrefix()
      Description copied from interface: KafkaListenerEndpoint
      Return the client id prefix for the container; it will be suffixed by '-n' to provide a unique id when concurrency is used.
      Specified by:
      getClientIdPrefix in interface KafkaListenerEndpoint
      Returns:
      the client id prefix.
    • setClientIdPrefix

      public void setClientIdPrefix(@Nullable String clientIdPrefix)
      Set the client id prefix; overrides the client id in the consumer configuration properties.
      Parameters:
      clientIdPrefix - the prefix.
      Since:
      2.1.1
    • getConcurrency

      public @Nullable Integer getConcurrency()
      Description copied from interface: KafkaListenerEndpoint
      Return the concurrency for this endpoint's container.
      Specified by:
      getConcurrency in interface KafkaListenerEndpoint
      Returns:
      the concurrency.
    • setConcurrency

      public void setConcurrency(@Nullable Integer concurrency)
      Set the concurrency for this endpoint's container.
      Parameters:
      concurrency - the concurrency.
      Since:
      2.2
    • getAutoStartup

      public @Nullable Boolean getAutoStartup()
      Description copied from interface: KafkaListenerEndpoint
      Return the autoStartup for this endpoint's container.
      Specified by:
      getAutoStartup in interface KafkaListenerEndpoint
      Returns:
      the autoStartup.
    • setAutoStartup

      public void setAutoStartup(@Nullable Boolean autoStartup)
      Set the autoStartup for this endpoint's container.
      Parameters:
      autoStartup - the autoStartup.
      Since:
      2.2
    • setReplyHeadersConfigurer

      public void setReplyHeadersConfigurer(ReplyHeadersConfigurer replyHeadersConfigurer)
      Set a configurer which will be invoked when creating a reply message.
      Parameters:
      replyHeadersConfigurer - the configurer.
      Since:
      2.2
    • getConsumerProperties

      public @Nullable Properties getConsumerProperties()
      Description copied from interface: KafkaListenerEndpoint
      Get the consumer properties that will be merged with the consumer properties provided by the consumer factory; properties here will supersede any with the same name(s) in the consumer factory. group.id and client.id are ignored.
      Specified by:
      getConsumerProperties in interface KafkaListenerEndpoint
      Returns:
      the properties.
      See Also:
    • setConsumerProperties

      public void setConsumerProperties(@Nullable Properties consumerProperties)
      Set the consumer properties that will be merged with the consumer properties provided by the consumer factory; properties here will supersede any with the same name(s) in the consumer factory. group.id and client.id are ignored.
      Parameters:
      consumerProperties - the properties.
      Since:
      2.1.4
      See Also:
    • isSplitIterables

      public boolean isSplitIterables()
      Description copied from interface: KafkaListenerEndpoint
      When true, Iterable return results will be split into discrete records.
      Specified by:
      isSplitIterables in interface KafkaListenerEndpoint
      Returns:
      true to split.
    • setSplitIterables

      public void setSplitIterables(boolean splitIterables)
      Set to false to disable splitting Iterable reply values into separate records.
      Parameters:
      splitIterables - false to disable; default true.
      Since:
      2.3.5
    • getListenerInfo

      public byte @Nullable [] getListenerInfo()
      Description copied from interface: KafkaListenerEndpoint
      Get the listener info to insert in the record header.
      Specified by:
      getListenerInfo in interface KafkaListenerEndpoint
      Returns:
      the info.
    • setListenerInfo

      public void setListenerInfo(byte @Nullable [] listenerInfo)
      Set the listener info to insert in the record header.
      Parameters:
      listenerInfo - the info.
      Since:
      2.8.4
    • getBatchToRecordAdapter

      protected @Nullable BatchToRecordAdapter<K,V> getBatchToRecordAdapter()
    • setBatchToRecordAdapter

      public void setBatchToRecordAdapter(BatchToRecordAdapter<K,V> batchToRecordAdapter)
      Parameters:
      batchToRecordAdapter - the adapter.
      Since:
      2.4.2
    • setCorrelationHeaderName

      public void setCorrelationHeaderName(String correlationHeaderName)
      Set a custom header name for the correlation id. Default KafkaHeaders.CORRELATION_ID. This header will be echoed back in any reply message.
      Parameters:
      correlationHeaderName - the header name.
      Since:
      3.0
    • getContainerPostProcessor

      public @Nullable ContainerPostProcessor<?,?,?> getContainerPostProcessor()
      Description copied from interface: KafkaListenerEndpoint
      Return the ContainerPostProcessor for this endpoint, or null if not explicitly set.
      Specified by:
      getContainerPostProcessor in interface KafkaListenerEndpoint
      Returns:
      the container post processor.
    • setContainerPostProcessor

      public void setContainerPostProcessor(ContainerPostProcessor<?,?,?> containerPostProcessor)
      Set the ContainerPostProcessor on the endpoint to allow customizing the container after its creation and configuration.
      Parameters:
      containerPostProcessor - the post processor.
      Since:
      3.1
    • afterPropertiesSet

      public void afterPropertiesSet()
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean
    • setupListenerContainer

      public void setupListenerContainer(MessageListenerContainer listenerContainer, @Nullable MessageConverter messageConverter)
      Description copied from interface: KafkaListenerEndpoint
      Setup the specified message listener container with the model defined by this endpoint.

      This endpoint must provide the requested missing option(s) of the specified container to make it usable. Usually, this is about setting the queues and the messageListener to use but an implementation may override any default setting that was already set.

      Specified by:
      setupListenerContainer in interface KafkaListenerEndpoint
      Parameters:
      listenerContainer - the listener container to configure
      messageConverter - the message converter - can be null
    • createMessageListener

      protected abstract MessagingMessageListenerAdapter<K,V> createMessageListener(MessageListenerContainer container, @Nullable MessageConverter messageConverter)
      Create a MessageListener that is able to serve this endpoint for the specified container.
      Parameters:
      container - the MessageListenerContainer to create a MessageListener.
      messageConverter - the message converter - may be null.
      Returns:
      a MessageListener instance.
    • getEndpointDescription

      protected StringBuilder getEndpointDescription()
      Return a description for this endpoint.
      Returns:
      a description for this endpoint.

      Available to subclasses, for inclusion in their toString() result.

    • toString

      public String toString()
      Overrides:
      toString in class Object