我如何限制Dataflow网格中的TransformManyBlock
?
我已经指定了一个BoundedCapacity
,但它似乎只影响输入队列。
所以我的块继续处理输入,输出队列不断增长。
以下块也指定了BoundedCapacity
,然后所有的项都堆积在TransformManyBlock
的输出队列中,耗尽了所有的RAM。
我如何限制Dataflow网格中的TransformManyBlock
?
我已经指定了一个BoundedCapacity
,但它似乎只影响输入队列。
所以我的块继续处理输入,输出队列不断增长。
以下块也指定了BoundedCapacity
,然后所有的项都堆积在TransformManyBlock
的输出队列中,耗尽了所有的RAM。
是的,你说得对,没有内置的机会来限制输出队列。这样做的原因是检查输出队列是否已满会增加更多的开销。
你应该检查的一件事是你用于添加消息的方法。如果是Post
,它将阻塞线程,直到消息被发布。但如果你使用SendAsync
,你应该await
它,否则你会用await
状态机和正在发布中的消息淹没你的RAM。
然而,至少有两件事情你可以做:
BufferBlock
以实现此目的 - 这是默认方式在数据流中添加一些节流控制。在这种情况下,如果没有位置,消息将无法在你的数据流中继续传递。这个解决方案将在你的块之间链接时起作用。