Interface KafkaConsumer<K,V>

Type Parameters:
K - the type of key
V - the type of value
All Known Implementing Classes:
ReactiveKafkaConsumer

public interface KafkaConsumer<K,V>
Kafka Consumer API.

Unlike Consumer, this API is asynchronous and make sure that the actions are executed on the Kafka polling thread.

  • Method Summary

    Modifier and Type
    Method
    Description
    io.smallrye.mutiny.Uni<Void>
    commit(Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata> map)
    Commits the offsets
    io.smallrye.mutiny.Uni<Void>
    commitAsync(Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata> map)
    Commits the offsets asynchronously
    io.smallrye.mutiny.Uni<Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata>>
    committed(org.apache.kafka.common.TopicPartition... tps)
    Retrieved the last committed offset for each topic/partition
     
    io.smallrye.mutiny.Uni<org.apache.kafka.clients.consumer.ConsumerGroupMetadata>
     
    io.smallrye.mutiny.Uni<Set<org.apache.kafka.common.TopicPartition>>
    Retrieves the current assignments of the consumer.
    io.smallrye.mutiny.Uni<Map<org.apache.kafka.common.TopicPartition,Long>>
    Retrieves the next positions for each assigned topic/partitions
    io.smallrye.mutiny.Uni<Map<String,List<org.apache.kafka.common.PartitionInfo>>>
     
    io.smallrye.mutiny.Uni<Map<String,List<org.apache.kafka.common.PartitionInfo>>>
     
    io.smallrye.mutiny.Uni<List<org.apache.kafka.common.PartitionInfo>>
     
    io.smallrye.mutiny.Uni<Set<org.apache.kafka.common.TopicPartition>>
    Pauses the consumption of records.
    io.smallrye.mutiny.Uni<Set<org.apache.kafka.common.TopicPartition>>
    Retrieves the set of paused topic/partition
    io.smallrye.mutiny.Uni<Void>
    For each assigned topic partition reset to last committed offset or the beginning
    io.smallrye.mutiny.Uni<Void>
    Resumes the consumption of record.
    io.smallrye.mutiny.Uni<Void>
    runOnPollingThread(Consumer<org.apache.kafka.clients.consumer.Consumer<K,V>> action)
    Runs an action on the polling thread.
    <R> io.smallrye.mutiny.Uni<R>
    runOnPollingThread(Function<org.apache.kafka.clients.consumer.Consumer<K,V>,R> action)
    Runs an action on the polling thread.
    io.smallrye.mutiny.Uni<Void>
    seek(org.apache.kafka.common.TopicPartition partition, long offset)
    Overrides the fetch offset that the consumer will use on the next poll of given topic and partition.
    io.smallrye.mutiny.Uni<Void>
    seek(org.apache.kafka.common.TopicPartition partition, org.apache.kafka.clients.consumer.OffsetAndMetadata offsetAndMetadata)
    Overrides the fetch offset that the consumer will use on the next poll of given topic and partition.
    io.smallrye.mutiny.Uni<Void>
    seekToBeginning(Collection<org.apache.kafka.common.TopicPartition> partitions)
    Seek to the first offset for each of the given partitions.
    io.smallrye.mutiny.Uni<Void>
    seekToEnd(Collection<org.apache.kafka.common.TopicPartition> partitions)
    Seek to the last offset for each of the given partitions.
    org.apache.kafka.clients.consumer.Consumer<K,V>
     
  • Method Details

    • configuration

      Map<String,?> configuration()
      Returns:
      Kafka consumer configuration
    • runOnPollingThread

      @CheckReturnValue <R> io.smallrye.mutiny.Uni<R> runOnPollingThread(Function<org.apache.kafka.clients.consumer.Consumer<K,V>,R> action)
      Runs an action on the polling thread.

      The action is a function taking as parameter the Consumer and that returns a result (potentially null). The produced Uni emits the returned result when the action completes. If the action throws an exception, the produced Uni emits the exception as failure.

      If the action does not return a result, use runOnPollingThread(java.util.function.Consumer).

      Type Parameters:
      R - the type of result, can be Void
      Parameters:
      action - the action to execute, must not be null
      Returns:
      the Uni emitting the result or the failure when the action completes.
    • runOnPollingThread

      @CheckReturnValue io.smallrye.mutiny.Uni<Void> runOnPollingThread(Consumer<org.apache.kafka.clients.consumer.Consumer<K,V>> action)
      Runs an action on the polling thread.

      The action is a consumer receiving the Consumer. The produced Uni emits null when the action completes. If the action throws an exception, the produced Uni emits the exception as failure.

      Parameters:
      action - the action, must not be null
      Returns:
      the Uni emitting null or the failure when the action completes.
    • pause

      @CheckReturnValue io.smallrye.mutiny.Uni<Set<org.apache.kafka.common.TopicPartition>> pause()
      Pauses the consumption of records. The polling will continue, but no records will be received. IMPORTANT: To use this method, you need to disable the auto-pause/resume feature from the connector. Otherwise, the client will be resumed automatically when there are enough requests. To disable the auto-pause/resume, set mp.messaging.incoming.[channel].pause-if-no-requests to false.
      Returns:
      the Uni emitting when the action completes, the set of topic/partition paused by this call.
    • paused

      @CheckReturnValue io.smallrye.mutiny.Uni<Set<org.apache.kafka.common.TopicPartition>> paused()
      Retrieves the set of paused topic/partition
      Returns:
      the Uni emitting the set of topic/partition paused.
    • committed

      @CheckReturnValue io.smallrye.mutiny.Uni<Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata>> committed(org.apache.kafka.common.TopicPartition... tps)
      Retrieved the last committed offset for each topic/partition
      Parameters:
      tps - the set of topic/partition to query, must not be null, must not be empty.
      Returns:
      the Uni emitting the offset for the underlying consumer for each of the passed topic/partition.
    • resume

      @CheckReturnValue io.smallrye.mutiny.Uni<Void> resume()
      Resumes the consumption of record. It resumes the consumption of all the paused topic/partition. IMPORTANT: To use this method, you need to disable the auto-pause/resume feature from the connector. Otherwise, the client will be paused automatically when there are no requests. To disable the auto-pause/resume, set mp.messaging.incoming.[channel].pause-if-no-requests to false.
      Returns:
      the Uni indicating when the resume action completes.
    • unwrap

      org.apache.kafka.clients.consumer.Consumer<K,V> unwrap()
      Returns:
      the underlying consumer. Be aware that to use it you needs to be on the polling thread.
    • commit

      @CheckReturnValue io.smallrye.mutiny.Uni<Void> commit(Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata> map)
      Commits the offsets
      Parameters:
      map - the map of topic/partition -> offset to commit
      Returns:
      the Uni emitting null when the commit has been executed.
    • commitAsync

      io.smallrye.mutiny.Uni<Void> commitAsync(Map<org.apache.kafka.common.TopicPartition,org.apache.kafka.clients.consumer.OffsetAndMetadata> map)
      Commits the offsets asynchronously
      Parameters:
      map - the map of topic/partition -> offset to commit
      Returns:
      the Uni emitting null when the commit has been executed.
    • getPositions

      @CheckReturnValue io.smallrye.mutiny.Uni<Map<org.apache.kafka.common.TopicPartition,Long>> getPositions()
      Retrieves the next positions for each assigned topic/partitions
      Returns:
      the Uni emitting the map of topic/partition -> position.
    • getAssignments

      @CheckReturnValue io.smallrye.mutiny.Uni<Set<org.apache.kafka.common.TopicPartition>> getAssignments()
      Retrieves the current assignments of the consumer.
      Returns:
      the Uni emitting the set of topic/partition currently assigned to the consumer
    • seek

      @CheckReturnValue io.smallrye.mutiny.Uni<Void> seek(org.apache.kafka.common.TopicPartition partition, long offset)
      Overrides the fetch offset that the consumer will use on the next poll of given topic and partition. Note that you may lose data if this API is arbitrarily used in the middle of consumption.
      Parameters:
      partition - the topic and partition for which to set the offset
      offset - the new offset
      Returns:
      a Uni that completes successfully when the offset is set; it completes with IllegalArgumentException if the provided offset is negative; it completes with IllegalStateException if the provided TopicPartition is not assigned to this consumer
    • seek

      @CheckReturnValue io.smallrye.mutiny.Uni<Void> seek(org.apache.kafka.common.TopicPartition partition, org.apache.kafka.clients.consumer.OffsetAndMetadata offsetAndMetadata)
      Overrides the fetch offset that the consumer will use on the next poll of given topic and partition. This method allows setting the leaderEpoch along with the desired offset. Note that you may lose data if this API is arbitrarily used in the middle of consumption.
      Parameters:
      partition - the topic and partition for which to set the offset
      offsetAndMetadata - the new offset, with additional metadata
      Returns:
      a Uni that completes successfully when the offset is set; it completes with IllegalArgumentException if the provided offset is negative; it completes with IllegalStateException if the provided TopicPartition is not assigned to this consumer
    • seekToBeginning

      @CheckReturnValue io.smallrye.mutiny.Uni<Void> seekToBeginning(Collection<org.apache.kafka.common.TopicPartition> partitions)
      Seek to the first offset for each of the given partitions. If no partitions are provided, seek to the first offset for all of the currently assigned partitions.
      Parameters:
      partitions - the partitions for which to set the offset
      Returns:
      a Uni that completes successfully when the offset is set; it completes with IllegalArgumentException if partitions is null; it completes with IllegalStateException if any of the provided TopicPartitions are not currently assigned to this consumer
    • seekToEnd

      @CheckReturnValue io.smallrye.mutiny.Uni<Void> seekToEnd(Collection<org.apache.kafka.common.TopicPartition> partitions)
      Seek to the last offset for each of the given partitions. If no partitions are provided, seek to the last offset for all of the currently assigned partitions.
      Parameters:
      partitions - the partitions for which to set the offset
      Returns:
      a Uni that completes successfully when the offset is set; it completes with IllegalArgumentException if partitions is null; it completes with IllegalStateException if any of the provided TopicPartitions are not currently assigned to this consumer
    • consumerGroupMetadata

      @CheckReturnValue io.smallrye.mutiny.Uni<org.apache.kafka.clients.consumer.ConsumerGroupMetadata> consumerGroupMetadata()
      Returns:
      the Uni emitting the group metadata of this consumer
    • resetToLastCommittedPositions

      @CheckReturnValue io.smallrye.mutiny.Uni<Void> resetToLastCommittedPositions()
      For each assigned topic partition reset to last committed offset or the beginning
      Returns:
      the Uni emitting null when the reset has been executed.
    • lisTopics

      @CheckReturnValue io.smallrye.mutiny.Uni<Map<String,List<org.apache.kafka.common.PartitionInfo>>> lisTopics()
    • lisTopics

      @CheckReturnValue io.smallrye.mutiny.Uni<Map<String,List<org.apache.kafka.common.PartitionInfo>>> lisTopics(Duration timeout)
    • partitionsFor

      @CheckReturnValue io.smallrye.mutiny.Uni<List<org.apache.kafka.common.PartitionInfo>> partitionsFor(String topic)