Interface KafkaOperations<K,​V>

  • Type Parameters:
    K - the key type.
    V - the value type. If the Kafka topic is set with CreateTime all send operations will use the user provided time if provided, else KafkaProducer will generate one If the topic is set with LogAppendTime then the user provided timestamp will be ignored and instead will be the Kafka broker local time when the message is appended
    All Known Implementing Classes:
    AggregatingReplyingKafkaTemplate, KafkaTemplate, ReplyingKafkaTemplate, RoutingKafkaTemplate

    public interface KafkaOperations<K,​V>
    The basic Kafka operations contract returning ListenableFutures.
    Author:
    Marius Bogoevici, Gary Russell, Biju Kunjummen
    • Method Detail

      • sendDefault

        @Deprecated
        org.springframework.util.concurrent.ListenableFuture<SendResult<K,​V>> sendDefault​(K key,
                                                                                                V data)
        Deprecated.
        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.
        See Also:
        usingCompletableFuture()
      • sendDefault

        @Deprecated
        org.springframework.util.concurrent.ListenableFuture<SendResult<K,​V>> sendDefault​(java.lang.Integer partition,
                                                                                                K key,
                                                                                                V data)
        Deprecated.
        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.
        See Also:
        usingCompletableFuture()
      • sendDefault

        @Deprecated
        org.springframework.util.concurrent.ListenableFuture<SendResult<K,​V>> sendDefault​(java.lang.Integer partition,
                                                                                                java.lang.Long timestamp,
                                                                                                K key,
                                                                                                V data)
        Deprecated.
        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.
        Since:
        1.3
        See Also:
        usingCompletableFuture()
      • send

        @Deprecated
        org.springframework.util.concurrent.ListenableFuture<SendResult<K,​V>> send​(java.lang.String topic,
                                                                                         V data)
        Deprecated.
        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.
        See Also:
        usingCompletableFuture()
      • send

        @Deprecated
        org.springframework.util.concurrent.ListenableFuture<SendResult<K,​V>> send​(java.lang.String topic,
                                                                                         K key,
                                                                                         V data)
        Deprecated.
        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.
        See Also:
        usingCompletableFuture()
      • send

        @Deprecated
        org.springframework.util.concurrent.ListenableFuture<SendResult<K,​V>> send​(java.lang.String topic,
                                                                                         java.lang.Integer partition,
                                                                                         K key,
                                                                                         V data)
        Deprecated.
        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.
        See Also:
        usingCompletableFuture()
      • send

        @Deprecated
        org.springframework.util.concurrent.ListenableFuture<SendResult<K,​V>> send​(java.lang.String topic,
                                                                                         java.lang.Integer partition,
                                                                                         java.lang.Long timestamp,
                                                                                         K key,
                                                                                         V data)
        Deprecated.
        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.
        Since:
        1.3
        See Also:
        usingCompletableFuture()
      • 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.
        Since:
        1.1
      • metrics

        java.util.Map<org.apache.kafka.common.MetricName,​? extends org.apache.kafka.common.Metric> metrics()
        See Producer.metrics().
        Returns:
        the metrics.
        Since:
        1.1
      • 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.
        Since:
        1.1
      • 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.
        Since:
        1.1
      • flush

        void flush()
        Flush the producer.
      • sendOffsetsToTransaction

        @Deprecated
        void sendOffsetsToTransaction​(java.util.Map<org.apache.kafka.common.TopicPartition,​org.apache.kafka.clients.consumer.OffsetAndMetadata> offsets)
        Deprecated.
        in the 3.0.0 KafkaProducer.
        When running in a transaction, send the consumer offset(s) to the transaction. The group id is obtained from KafkaUtils.getConsumerGroupId(). 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.
        Parameters:
        offsets - The offsets.
        Since:
        1.3
      • sendOffsetsToTransaction

        @Deprecated
        void sendOffsetsToTransaction​(java.util.Map<org.apache.kafka.common.TopicPartition,​org.apache.kafka.clients.consumer.OffsetAndMetadata> offsets,
                                      java.lang.String consumerGroupId)
        Deprecated.
        in the 3.0.0 KafkaProducer.
        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.
        Parameters:
        offsets - The offsets.
        consumerGroupId - the consumer's group.id.
        Since:
        1.3
      • 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.
        Since:
        2.5
        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.
        Since:
        2.3
      • isAllowNonTransactional

        default boolean isAllowNonTransactional()
        Return true if this template, when transactional, allows non-transactional operations.
        Returns:
        true to allow.
        Since:
        2.4.3
      • 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.
        Since:
        2.5
      • getProducerFactory

        default ProducerFactory<K,​V> getProducerFactory()
        Return the producer factory used by this template.
        Returns:
        the factory.
        Since:
        2.5
      • 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.
        Since:
        2.8
        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.
        Since:
        2.8
      • 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
        Since:
        2.8
        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.
        Since:
        2.8
      • usingCompletableFuture

        default KafkaOperations2<K,​V> usingCompletableFuture()
        Return an implementation that returns CompletableFuture instead of ListenableFuture. The methods returning ListenableFuture will be removed in 3.0
        Returns:
        the implementation.
        Since:
        2.9.