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
maxTotalQueueSizeparameter to backpressure only over the buffers of all partitions together. The number of records that are fetched on every poll is controlled by themax.poll.recordssetting, the number of records fetched for every partition is somewhere between 0 andmax.poll.records. The default value for this parameter is 2 * the defaultmax.poll.recordsof 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 exceedmaxTotalQueueSize, then every call a random set of eligible streams is selected that stays belowmaxTotalQueueSize. The randomization ensures fairness and prevents read-starvation for streams at the end of the list. The default value is 20 * the default formaxPartitionQueueSize, allowing approximately 20 partitions to do pre-fetching in each poll.
- Alphabetic
- By Inheritance
- ManyPartitionsQueueSizeBasedFetchStrategy
- Serializable
- Product
- Equals
- FetchStrategy
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- 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
maxTotalQueueSizeparameter to backpressure only over the buffers of all partitions together. The number of records that are fetched on every poll is controlled by themax.poll.recordssetting, the number of records fetched for every partition is somewhere between 0 andmax.poll.records. The default value for this parameter is 2 * the defaultmax.poll.recordsof 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 exceedmaxTotalQueueSize, then every call a random set of eligible streams is selected that stays belowmaxTotalQueueSize. The randomization ensures fairness and prevents read-starvation for streams at the end of the list. The default value is 20 * the default formaxPartitionQueueSize, allowing approximately 20 partitions to do pre-fetching in each poll.
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- val maxPartitionQueueSize: Int
- val maxTotalQueueSize: Int
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- 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
- ManyPartitionsQueueSizeBasedFetchStrategy → FetchStrategy
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])