Interface KafkaOperations2<K,​V>

  • Type Parameters:
    K - the key type.
    V - the value type.

    public interface KafkaOperations2<K,​V>
    The basic Kafka operations contract returning CompletableFutures.
    Since:
    2.9
    Author:
    Gary Russell
    • Method Summary

      All Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      <T> T execute​(KafkaOperations.ProducerCallback<K,​V,​T> callback)
      Execute some arbitrary operation(s) on the producer and return the result.
      <T> T executeInTransaction​(KafkaOperations.OperationsCallback<K,​V,​T> callback)
      Execute some arbitrary operation(s) on the operations and return the result.
      void flush()
      Flush the producer.
      default ProducerFactory<K,​V> getProducerFactory()
      Return the producer factory used by this template.
      default boolean inTransaction()
      Return true if the template is currently running in a transaction on the calling thread.
      default boolean isAllowNonTransactional()
      Return true if this template, when transactional, allows non-transactional operations.
      boolean isTransactional()
      Return true if the implementation supports transactions (has a transaction-capable producer factory).
      java.util.Map<org.apache.kafka.common.MetricName,​? extends org.apache.kafka.common.Metric> metrics()
      See Producer.metrics().
      java.util.List<org.apache.kafka.common.PartitionInfo> partitionsFor​(java.lang.String topic)
      See Producer.partitionsFor(String).
      default org.apache.kafka.clients.consumer.ConsumerRecord<K,​V> receive​(java.lang.String topic, int partition, long offset)
      Receive a single record with the default poll timeout (5 seconds).
      org.apache.kafka.clients.consumer.ConsumerRecord<K,​V> receive​(java.lang.String topic, int partition, long offset, java.time.Duration pollTimeout)
      Receive a single record.
      default org.apache.kafka.clients.consumer.ConsumerRecords<K,​V> receive​(java.util.Collection<TopicPartitionOffset> requested)
      Receive a multiple records with the default poll timeout (5 seconds).
      org.apache.kafka.clients.consumer.ConsumerRecords<K,​V> receive​(java.util.Collection<TopicPartitionOffset> requested, java.time.Duration pollTimeout)
      Receive multiple records.
      java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(java.lang.String topic, java.lang.Integer partition, java.lang.Long timestamp, K key, V data)
      Send the data to the provided topic with the provided key and partition.
      java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(java.lang.String topic, java.lang.Integer partition, K key, V data)
      Send the data to the provided topic with the provided key and partition.
      java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(java.lang.String topic, K key, V data)
      Send the data to the provided topic with the provided key and no partition.
      java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(java.lang.String topic, V data)
      Send the data to the provided topic with no key or partition.
      java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(org.apache.kafka.clients.producer.ProducerRecord<K,​V> record)
      Send the provided ProducerRecord.
      java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(org.springframework.messaging.Message<?> message)
      Send a message with routing information in message headers.
      java.util.concurrent.CompletableFuture<SendResult<K,​V>> sendDefault​(java.lang.Integer partition, java.lang.Long timestamp, K key, V data)
      Send the data to the default topic with the provided key and partition.
      java.util.concurrent.CompletableFuture<SendResult<K,​V>> sendDefault​(java.lang.Integer partition, K key, V data)
      Send the data to the default topic with the provided key and partition.
      java.util.concurrent.CompletableFuture<SendResult<K,​V>> sendDefault​(K key, V data)
      Send the data to the default topic with the provided key and no partition.
      java.util.concurrent.CompletableFuture<SendResult<K,​V>> sendDefault​(V data)
      Send the data to the default topic with no key or partition.
      default void sendOffsetsToTransaction​(java.util.Map<org.apache.kafka.common.TopicPartition,​org.apache.kafka.clients.consumer.OffsetAndMetadata> offsets, org.apache.kafka.clients.consumer.ConsumerGroupMetadata groupMetadata)
      When running in a transaction, send the consumer offset(s) to the transaction.
    • Method Detail

      • sendDefault

        java.util.concurrent.CompletableFuture<SendResult<K,​V>> sendDefault​(V data)
        Send the data to the default topic with no key or partition.
        Parameters:
        data - The data.
        Returns:
        a Future for the SendResult.
      • sendDefault

        java.util.concurrent.CompletableFuture<SendResult<K,​V>> sendDefault​(K key,
                                                                                  V data)
        Send the data to the default topic with the provided key and no partition.
        Parameters:
        key - the key.
        data - The data.
        Returns:
        a Future for the SendResult.
      • sendDefault

        java.util.concurrent.CompletableFuture<SendResult<K,​V>> sendDefault​(java.lang.Integer partition,
                                                                                  K key,
                                                                                  V data)
        Send the data to the default topic with the provided key and partition.
        Parameters:
        partition - the partition.
        key - the key.
        data - the data.
        Returns:
        a Future for the SendResult.
      • sendDefault

        java.util.concurrent.CompletableFuture<SendResult<K,​V>> sendDefault​(java.lang.Integer partition,
                                                                                  java.lang.Long timestamp,
                                                                                  K key,
                                                                                  V data)
        Send the data to the default topic with the provided key and partition.
        Parameters:
        partition - the partition.
        timestamp - the timestamp of the record.
        key - the key.
        data - the data.
        Returns:
        a Future for the SendResult.
      • send

        java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(java.lang.String topic,
                                                                           V data)
        Send the data to the provided topic with no key or partition.
        Parameters:
        topic - the topic.
        data - The data.
        Returns:
        a Future for the SendResult.
      • send

        java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(java.lang.String topic,
                                                                           K key,
                                                                           V data)
        Send the data to the provided topic with the provided key and no partition.
        Parameters:
        topic - the topic.
        key - the key.
        data - The data.
        Returns:
        a Future for the SendResult.
      • send

        java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(java.lang.String topic,
                                                                           java.lang.Integer partition,
                                                                           K key,
                                                                           V data)
        Send the data to the provided topic with the provided key and partition.
        Parameters:
        topic - the topic.
        partition - the partition.
        key - the key.
        data - the data.
        Returns:
        a Future for the SendResult.
      • send

        java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(java.lang.String topic,
                                                                           java.lang.Integer partition,
                                                                           java.lang.Long timestamp,
                                                                           K key,
                                                                           V data)
        Send the data to the provided topic with the provided key and partition.
        Parameters:
        topic - the topic.
        partition - the partition.
        timestamp - the timestamp of the record.
        key - the key.
        data - the data.
        Returns:
        a Future for the SendResult.
      • send

        java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(org.apache.kafka.clients.producer.ProducerRecord<K,​V> record)
        Send the provided ProducerRecord.
        Parameters:
        record - the record.
        Returns:
        a Future for the SendResult.
      • send

        java.util.concurrent.CompletableFuture<SendResult<K,​V>> send​(org.springframework.messaging.Message<?> message)
        Send a message with routing information in message headers. The message payload may be converted before sending.
        Parameters:
        message - the message to send.
        Returns:
        a Future for the SendResult.
        See Also:
        KafkaHeaders.TOPIC, KafkaHeaders.PARTITION, KafkaHeaders.KEY
      • partitionsFor

        java.util.List<org.apache.kafka.common.PartitionInfo> partitionsFor​(java.lang.String topic)
        See Producer.partitionsFor(String).
        Parameters:
        topic - the topic.
        Returns:
        the partition info.
      • metrics

        java.util.Map<org.apache.kafka.common.MetricName,​? extends org.apache.kafka.common.Metric> metrics()
        See Producer.metrics().
        Returns:
        the metrics.
      • execute

        @Nullable
        <T> T execute​(KafkaOperations.ProducerCallback<K,​V,​T> callback)
        Execute some arbitrary operation(s) on the producer and return the result.
        Type Parameters:
        T - the result type.
        Parameters:
        callback - the callback.
        Returns:
        the result.
      • executeInTransaction

        @Nullable
        <T> T executeInTransaction​(KafkaOperations.OperationsCallback<K,​V,​T> callback)
        Execute some arbitrary operation(s) on the operations and return the result. The operations are invoked within a local transaction and do not participate in a global transaction (if present).
        Type Parameters:
        T - the result type.
        Parameters:
        callback - the callback.
        Returns:
        the result.
      • flush

        void flush()
        Flush the producer.
      • sendOffsetsToTransaction

        default void sendOffsetsToTransaction​(java.util.Map<org.apache.kafka.common.TopicPartition,​org.apache.kafka.clients.consumer.OffsetAndMetadata> offsets,
                                              org.apache.kafka.clients.consumer.ConsumerGroupMetadata groupMetadata)
        When running in a transaction, send the consumer offset(s) to the transaction. It is not necessary to call this method if the operations are invoked on a listener container thread (and the listener container is configured with a KafkaAwareTransactionManager) since the container will take care of sending the offsets to the transaction. Use with 2.5 brokers or later.
        Parameters:
        offsets - The offsets.
        groupMetadata - the consumer group metadata.
        See Also:
        Producer.sendOffsetsToTransaction(Map, ConsumerGroupMetadata)
      • isTransactional

        boolean isTransactional()
        Return true if the implementation supports transactions (has a transaction-capable producer factory).
        Returns:
        true or false.
      • isAllowNonTransactional

        default boolean isAllowNonTransactional()
        Return true if this template, when transactional, allows non-transactional operations.
        Returns:
        true to allow.
      • inTransaction

        default boolean inTransaction()
        Return true if the template is currently running in a transaction on the calling thread.
        Returns:
        true if a transaction is running.
      • getProducerFactory

        default ProducerFactory<K,​V> getProducerFactory()
        Return the producer factory used by this template.
        Returns:
        the factory.
      • receive

        @Nullable
        default org.apache.kafka.clients.consumer.ConsumerRecord<K,​V> receive​(java.lang.String topic,
                                                                                    int partition,
                                                                                    long offset)
        Receive a single record with the default poll timeout (5 seconds).
        Parameters:
        topic - the topic.
        partition - the partition.
        offset - the offset.
        Returns:
        the record or null.
        See Also:
        DEFAULT_POLL_TIMEOUT
      • receive

        @Nullable
        org.apache.kafka.clients.consumer.ConsumerRecord<K,​V> receive​(java.lang.String topic,
                                                                            int partition,
                                                                            long offset,
                                                                            java.time.Duration pollTimeout)
        Receive a single record.
        Parameters:
        topic - the topic.
        partition - the partition.
        offset - the offset.
        pollTimeout - the timeout.
        Returns:
        the record or null.
      • receive

        default org.apache.kafka.clients.consumer.ConsumerRecords<K,​V> receive​(java.util.Collection<TopicPartitionOffset> requested)
        Receive a multiple records with the default poll timeout (5 seconds). Only absolute, positive offsets are supported.
        Parameters:
        requested - a collection of record requests (topic/partition/offset).
        Returns:
        the records
        See Also:
        DEFAULT_POLL_TIMEOUT
      • receive

        org.apache.kafka.clients.consumer.ConsumerRecords<K,​V> receive​(java.util.Collection<TopicPartitionOffset> requested,
                                                                             java.time.Duration pollTimeout)
        Receive multiple records. Only absolute, positive offsets are supported.
        Parameters:
        requested - a collection of record requests (topic/partition/offset).
        pollTimeout - the timeout.
        Returns:
        the record or null.