Packages

c

zio.kafka.consumer.fetch

ManyPartitionsQueueSizeBasedFetchStrategy

final case class ManyPartitionsQueueSizeBasedFetchStrategy(maxPartitionQueueSize: Int = 1024, maxTotalQueueSize: Int = 20480) extends FetchStrategy with Product with Serializable

A fetch strategy that allows a stream to fetch data when its queue size is at or below maxPartitionQueueSize, as long as the total queue size is at or below maxTotalQueueSize. This strategy is suitable when QueueSizeBasedFetchStrategy requires too much heap space, particularly when a lot of partitions are being consumed.

maxPartitionQueueSize

Maximum number of records to be buffered per partition. This buffer improves throughput and supports varying downstream message processing time, while maintaining some backpressure. Low values effectively disable prefetching in favour of low memory consumption. Large values leave it up to maxTotalQueueSize parameter to backpressure only over the buffers of all partitions together. The number of records that are fetched on every poll is controlled by the max.poll.records setting, the number of records fetched for every partition is somewhere between 0 and max.poll.records. The default value for this parameter is 2 * the default max.poll.records of 500, rounded to the nearest power of 2.

maxTotalQueueSize

Maximum number of records to be buffered over all partitions together. This can be used to limit memory usage when consuming a large number of partitions. When multiple streams are eligible for pre-fetching (because their queue size is below maxPartitionQueueSize), but together they exceed maxTotalQueueSize, then every call a random set of eligible streams is selected that stays below maxTotalQueueSize. The randomization ensures fairness and prevents read-starvation for streams at the end of the list. The default value is 20 * the default for maxPartitionQueueSize, allowing approximately 20 partitions to do pre-fetching in each poll.

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ManyPartitionsQueueSizeBasedFetchStrategy
  2. Serializable
  3. Product
  4. Equals
  5. FetchStrategy
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new ManyPartitionsQueueSizeBasedFetchStrategy(maxPartitionQueueSize: Int = 1024, maxTotalQueueSize: Int = 20480)

    maxPartitionQueueSize

    Maximum number of records to be buffered per partition. This buffer improves throughput and supports varying downstream message processing time, while maintaining some backpressure. Low values effectively disable prefetching in favour of low memory consumption. Large values leave it up to maxTotalQueueSize parameter to backpressure only over the buffers of all partitions together. The number of records that are fetched on every poll is controlled by the max.poll.records setting, the number of records fetched for every partition is somewhere between 0 and max.poll.records. The default value for this parameter is 2 * the default max.poll.records of 500, rounded to the nearest power of 2.

    maxTotalQueueSize

    Maximum number of records to be buffered over all partitions together. This can be used to limit memory usage when consuming a large number of partitions. When multiple streams are eligible for pre-fetching (because their queue size is below maxPartitionQueueSize), but together they exceed maxTotalQueueSize, then every call a random set of eligible streams is selected that stays below maxTotalQueueSize. The randomization ensures fairness and prevents read-starvation for streams at the end of the list. The default value is 20 * the default for maxPartitionQueueSize, allowing approximately 20 partitions to do pre-fetching in each poll.

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @IntrinsicCandidate() @native()
  8. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  9. val maxPartitionQueueSize: Int
  10. val maxTotalQueueSize: Int
  11. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  12. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  13. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  14. def productElementNames: Iterator[String]
    Definition Classes
    Product
  15. def selectPartitionsToFetch(streams: Chunk[PartitionStream]): ZIO[Any, Nothing, Set[TopicPartition]]

    Selects which partitions can fetch data in the next poll.

    Selects which partitions can fetch data in the next poll.

    streams

    all stream for this consumer

    returns

    the partitions that may fetch in the next poll

    Definition Classes
    ManyPartitionsQueueSizeBasedFetchStrategyFetchStrategy
  16. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  17. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  18. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  19. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

    (Since version 9)

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from FetchStrategy

Inherited from AnyRef

Inherited from Any

Ungrouped