2
如何限制数据流网格中的TransformManyBlock
?Dataflow TransformManyBlock限制
我指定了一个BoundedCapacity,但它看起来只能影响输入队列。
所以我的块不断处理输入和输出队列不断增长。
以下块也指定了BoundedCapacity
,然后我的所有物品都堆积在TransformManyBlock
的输出队列中,吃掉我所有的RAM。
如何限制数据流网格中的TransformManyBlock
?Dataflow TransformManyBlock限制
我指定了一个BoundedCapacity,但它看起来只能影响输入队列。
所以我的块不断处理输入和输出队列不断增长。
以下块也指定了BoundedCapacity
,然后我的所有物品都堆积在TransformManyBlock
的输出队列中,吃掉我所有的RAM。
是的,你是对的,并没有内置的机会限制输出队列。这样做的方式会有更多的开销检查,输出队列是否满了。
你应该检查的一件事是用于添加消息的方法。如果它是Post
,它将在邮件发布之前阻塞该线程。但是,如果您使用的是SendAsync
,那么您应该使用await
,否则,您将使用await
状态机和处于发布过程中的消息泛滥您的RAM。
然而,至少有两件事情可以做:
BufferBlock
用于此目的 - this is default way在数据流中添加一些限制。在这种情况下,如果没有地方,消息不会在数据流上继续传播。如果您在彼此之间链接您的块,此解决方案将工作。