Class ProducerFactoryUtils


  • public final class ProducerFactoryUtils
    extends java.lang.Object
    Helper class for managing a Spring based Kafka DefaultKafkaProducerFactory in particular for obtaining transactional Kafka resources for a given ProducerFactory.

    Mainly for internal use within the framework.

    Author:
    Gary Russell
    • Field Detail

      • DEFAULT_CLOSE_TIMEOUT

        public static final java.time.Duration DEFAULT_CLOSE_TIMEOUT
        The default close timeout (5 seconds).
    • Method Detail

      • getTransactionalResourceHolder

        public static <K,​V> KafkaResourceHolder<K,​V> getTransactionalResourceHolder​(ProducerFactory<K,​V> producerFactory)
        Obtain a Producer that is synchronized with the current transaction, if any.
        Type Parameters:
        K - the key type.
        V - the value type.
        Parameters:
        producerFactory - the ProducerFactory to obtain a Channel for
        Returns:
        the resource holder.
      • getTransactionalResourceHolder

        public static <K,​V> KafkaResourceHolder<K,​V> getTransactionalResourceHolder​(ProducerFactory<K,​V> producerFactory,
                                                                                                java.time.Duration closeTimeout)
        Obtain a Producer that is synchronized with the current transaction, if any.
        Type Parameters:
        K - the key type.
        V - the value type.
        Parameters:
        producerFactory - the ProducerFactory to obtain a Channel for
        closeTimeout - the producer close timeout.
        Returns:
        the resource holder.
        Since:
        2.1.14
      • getTransactionalResourceHolder

        public static <K,​V> KafkaResourceHolder<K,​V> getTransactionalResourceHolder​(ProducerFactory<K,​V> producerFactory,
                                                                                                @Nullable
                                                                                                java.lang.String txIdPrefix,
                                                                                                java.time.Duration closeTimeout)
        Obtain a Producer that is synchronized with the current transaction, if any.
        Type Parameters:
        K - the key type.
        V - the value type.
        Parameters:
        producerFactory - the ProducerFactory to obtain a Channel for
        txIdPrefix - the transaction id prefix; if null, the producer factory prefix is used.
        closeTimeout - the producer close timeout.
        Returns:
        the resource holder.
        Since:
        2.3
      • releaseResources

        public static <K,​V> void releaseResources​(@Nullable
                                                        KafkaResourceHolder<K,​V> resourceHolder)