Class ReactiveKafkaProducerTemplate<K,​V>

  • Type Parameters:
    K - the key type.
    V - the value type.
    All Implemented Interfaces:
    java.lang.AutoCloseable, org.springframework.beans.factory.DisposableBean

    public class ReactiveKafkaProducerTemplate<K,​V>
    extends java.lang.Object
    implements java.lang.AutoCloseable, org.springframework.beans.factory.DisposableBean
    Reactive kafka producer operations implementation.
    Since:
    2.3.0
    Author:
    Mark Norkin
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      void close()  
      void destroy()  
      <T> reactor.core.publisher.Mono<T> doOnProducer​(java.util.function.Function<org.apache.kafka.clients.producer.Producer<K,​V>,​? extends T> action)  
      reactor.core.publisher.Mono<?> flush()
      Deprecated.
      - flush does not make sense in the context of a reactive flow since, the send completion signal is a send result, which implies that a flush is redundant.
      reactor.core.publisher.Flux<reactor.util.function.Tuple2<org.apache.kafka.common.MetricName,​? extends org.apache.kafka.common.Metric>> metricsFromProducer()  
      reactor.core.publisher.Flux<org.apache.kafka.common.PartitionInfo> partitionsFromProducerFor​(java.lang.String topic)  
      reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(java.lang.String topic, int partition, long timestamp, K key, V value)  
      reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(java.lang.String topic, int partition, K key, V value)  
      reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(java.lang.String topic, K key, V value)  
      reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(java.lang.String topic, org.springframework.messaging.Message<?> message)  
      reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(java.lang.String topic, V value)  
      reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(org.apache.kafka.clients.producer.ProducerRecord<K,​V> record)  
      <T> reactor.core.publisher.Flux<reactor.kafka.sender.SenderResult<T>> send​(org.reactivestreams.Publisher<? extends reactor.kafka.sender.SenderRecord<K,​V,​T>> records)  
      <T> reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<T>> send​(reactor.kafka.sender.SenderRecord<K,​V,​T> record)  
      <T> reactor.core.publisher.Flux<reactor.kafka.sender.SenderResult<T>> sendTransactionally​(org.reactivestreams.Publisher<? extends reactor.kafka.sender.SenderRecord<K,​V,​T>> records)  
      <T> reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<T>> sendTransactionally​(reactor.kafka.sender.SenderRecord<K,​V,​T> record)  
      reactor.kafka.sender.TransactionManager transactionManager()  
      • Methods inherited from class java.lang.Object

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

      • ReactiveKafkaProducerTemplate

        public ReactiveKafkaProducerTemplate​(reactor.kafka.sender.SenderOptions<K,​V> senderOptions)
      • ReactiveKafkaProducerTemplate

        public ReactiveKafkaProducerTemplate​(reactor.kafka.sender.SenderOptions<K,​V> senderOptions,
                                             RecordMessageConverter messageConverter)
    • Method Detail

      • sendTransactionally

        public <T> reactor.core.publisher.Flux<reactor.kafka.sender.SenderResult<T>> sendTransactionally​(org.reactivestreams.Publisher<? extends reactor.kafka.sender.SenderRecord<K,​V,​T>> records)
      • sendTransactionally

        public <T> reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<T>> sendTransactionally​(reactor.kafka.sender.SenderRecord<K,​V,​T> record)
      • send

        public reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(java.lang.String topic,
                                                                                                   V value)
      • send

        public reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(java.lang.String topic,
                                                                                                   K key,
                                                                                                   V value)
      • send

        public reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(java.lang.String topic,
                                                                                                   int partition,
                                                                                                   K key,
                                                                                                   V value)
      • send

        public reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(java.lang.String topic,
                                                                                                   int partition,
                                                                                                   long timestamp,
                                                                                                   K key,
                                                                                                   V value)
      • send

        public reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(java.lang.String topic,
                                                                                                   org.springframework.messaging.Message<?> message)
      • send

        public reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<java.lang.Void>> send​(org.apache.kafka.clients.producer.ProducerRecord<K,​V> record)
      • send

        public <T> reactor.core.publisher.Mono<reactor.kafka.sender.SenderResult<T>> send​(reactor.kafka.sender.SenderRecord<K,​V,​T> record)
      • send

        public <T> reactor.core.publisher.Flux<reactor.kafka.sender.SenderResult<T>> send​(org.reactivestreams.Publisher<? extends reactor.kafka.sender.SenderRecord<K,​V,​T>> records)
      • flush

        @Deprecated
        public reactor.core.publisher.Mono<?> flush()
        Deprecated.
        - flush does not make sense in the context of a reactive flow since, the send completion signal is a send result, which implies that a flush is redundant. If you use this method with reactor-kafka 1.3 or later, it must be scheduled to avoid a deadlock; see https://issues.apache.org/jira/browse/KAFKA-10790 (since 2.7).
        Flush the producer.
        Returns:
        Mono.empty().
      • partitionsFromProducerFor

        public reactor.core.publisher.Flux<org.apache.kafka.common.PartitionInfo> partitionsFromProducerFor​(java.lang.String topic)
      • metricsFromProducer

        public reactor.core.publisher.Flux<reactor.util.function.Tuple2<org.apache.kafka.common.MetricName,​? extends org.apache.kafka.common.Metric>> metricsFromProducer()
      • doOnProducer

        public <T> reactor.core.publisher.Mono<T> doOnProducer​(java.util.function.Function<org.apache.kafka.clients.producer.Producer<K,​V>,​? extends T> action)
      • transactionManager

        public reactor.kafka.sender.TransactionManager transactionManager()
      • destroy

        public void destroy()
        Specified by:
        destroy in interface org.springframework.beans.factory.DisposableBean
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable