Source.queue
最近添加了一个专门用于 OverflowStrategy.dropNew
避免了异步机制。物化的结果是 BoundedSourceQueue[T]
(与 SourceQueueWithComplete[T]
在旧版本中)。这些文件 SourceQueueWithComplete
的变体 Source.queue
明确表示物化队列应该由任意数量的并发生产者使用:
具体化的sourcequeue最多可由maxconcurrentoffers并发生产者使用。
这些文件 BoundedSourceQueue
别提这事。这个限制解除了吗 BoundedSourceQueue
? 它能被任意数量的并发生产者使用吗?
1条答案
按热度按时间zkure5ic1#
从技术上讲
SourceQueueWithComplete
变体没有maxConcurrentOffers
限制条件OverflowStrategy.dropNew
已生效。但是,由于向
SourceQueueWithComplete
是异步通信的,这意味着如果生产者的生产速度快于它处理未来的速度,它可能会占用内存。异步消除了反压力,除非其他机制重新引入它。因为当战略
dropNew
,可以立即知道元素被丢弃,可以同步传递提供的结果(即阻止生产者,直到它处理/丢弃结果)。这就允许任意多个生产商没有风险。因此,如果使用dropNew
战略BoundedSourceQueue
建议使用版本(即仅使用SourceQueueWithComplete
如果正在使用其他策略),则建议会随着负载的增加而变强。是的,正在运行的线程数是对并发生产者数量的限制
BoundedSourceQueue
变体。