Class KafkaAdmin

  • All Implemented Interfaces:
    org.springframework.beans.factory.Aware, org.springframework.beans.factory.SmartInitializingSingleton, org.springframework.context.ApplicationContextAware, KafkaAdminOperations

    public class KafkaAdmin
    extends KafkaResourceFactory
    implements org.springframework.context.ApplicationContextAware, org.springframework.beans.factory.SmartInitializingSingleton, KafkaAdminOperations
    An admin that delegates to an AdminClient to create topics defined in the application context.
    Since:
    1.3
    Author:
    Gary Russell, Artem Bilan
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  KafkaAdmin.NewTopics
      Wrapper for a collection of NewTopic to facilitate declaring multiple topics as a single bean.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.time.Duration DEFAULT_CLOSE_TIMEOUT
      The default close timeout duration as 10 seconds.
    • Constructor Summary

      Constructors 
      Constructor Description
      KafkaAdmin​(java.util.Map<java.lang.String,​java.lang.Object> config)
      Create an instance with an AdminClient based on the supplied configuration.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void afterSingletonsInstantiated()  
      void createOrModifyTopics​(org.apache.kafka.clients.admin.NewTopic... topics)
      Create topics if they don't exist or increase the number of partitions if needed.
      java.util.Map<java.lang.String,​org.apache.kafka.clients.admin.TopicDescription> describeTopics​(java.lang.String... topicNames)
      Obtain TopicDescriptions for these topics.
      java.util.Map<java.lang.String,​java.lang.Object> getConfigurationProperties()
      Get an unmodifiable copy of this admin's configuration.
      boolean initialize()
      Call this method to check/add topics; this might be needed if the broker was not available when the application context was initialized, and fatalIfBrokerNotAvailable is false, or autoCreate was set to false.
      void setApplicationContext​(org.springframework.context.ApplicationContext applicationContext)  
      void setAutoCreate​(boolean autoCreate)
      Set to false to suppress auto creation of topics during context initialization.
      void setCloseTimeout​(int closeTimeout)
      Set the close timeout in seconds.
      void setFatalIfBrokerNotAvailable​(boolean fatalIfBrokerNotAvailable)
      Set to true if you want the application context to fail to load if we are unable to connect to the broker during initialization, to check/add topics.
      void setModifyTopicConfigs​(boolean modifyTopicConfigs)
      Set to true to compare the current topic configuration properties with those in the NewTopic bean, and update if different.
      void setOperationTimeout​(int operationTimeout)
      Set the operation timeout in seconds.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEFAULT_CLOSE_TIMEOUT

        public static final java.time.Duration DEFAULT_CLOSE_TIMEOUT
        The default close timeout duration as 10 seconds.
    • Constructor Detail

      • KafkaAdmin

        public KafkaAdmin​(java.util.Map<java.lang.String,​java.lang.Object> config)
        Create an instance with an AdminClient based on the supplied configuration.
        Parameters:
        config - the configuration for the AdminClient.
    • Method Detail

      • setApplicationContext

        public void setApplicationContext​(org.springframework.context.ApplicationContext applicationContext)
                                   throws org.springframework.beans.BeansException
        Specified by:
        setApplicationContext in interface org.springframework.context.ApplicationContextAware
        Throws:
        org.springframework.beans.BeansException
      • setCloseTimeout

        public void setCloseTimeout​(int closeTimeout)
        Set the close timeout in seconds. Defaults to DEFAULT_CLOSE_TIMEOUT seconds.
        Parameters:
        closeTimeout - the timeout.
      • setOperationTimeout

        public void setOperationTimeout​(int operationTimeout)
        Set the operation timeout in seconds. Defaults to 30 seconds.
        Parameters:
        operationTimeout - the timeout.
      • setFatalIfBrokerNotAvailable

        public void setFatalIfBrokerNotAvailable​(boolean fatalIfBrokerNotAvailable)
        Set to true if you want the application context to fail to load if we are unable to connect to the broker during initialization, to check/add topics.
        Parameters:
        fatalIfBrokerNotAvailable - true to fail.
      • setAutoCreate

        public void setAutoCreate​(boolean autoCreate)
        Set to false to suppress auto creation of topics during context initialization.
        Parameters:
        autoCreate - boolean flag to indicate creating topics or not during context initialization
        See Also:
        initialize()
      • setModifyTopicConfigs

        public void setModifyTopicConfigs​(boolean modifyTopicConfigs)
        Set to true to compare the current topic configuration properties with those in the NewTopic bean, and update if different.
        Parameters:
        modifyTopicConfigs - true to check and update configs if necessary.
        Since:
        2.8.7
      • getConfigurationProperties

        public java.util.Map<java.lang.String,​java.lang.Object> getConfigurationProperties()
        Description copied from interface: KafkaAdminOperations
        Get an unmodifiable copy of this admin's configuration.
        Specified by:
        getConfigurationProperties in interface KafkaAdminOperations
        Returns:
        the configuration map.
      • afterSingletonsInstantiated

        public void afterSingletonsInstantiated()
        Specified by:
        afterSingletonsInstantiated in interface org.springframework.beans.factory.SmartInitializingSingleton
      • createOrModifyTopics

        public void createOrModifyTopics​(org.apache.kafka.clients.admin.NewTopic... topics)
        Description copied from interface: KafkaAdminOperations
        Create topics if they don't exist or increase the number of partitions if needed.
        Specified by:
        createOrModifyTopics in interface KafkaAdminOperations
        Parameters:
        topics - the topics.
      • describeTopics

        public java.util.Map<java.lang.String,​org.apache.kafka.clients.admin.TopicDescription> describeTopics​(java.lang.String... topicNames)
        Description copied from interface: KafkaAdminOperations
        Obtain TopicDescriptions for these topics.
        Specified by:
        describeTopics in interface KafkaAdminOperations
        Parameters:
        topicNames - the topic names.
        Returns:
        a map of name:topicDescription.