如何限制数据流网格中的TransformManyBlock
?
我指定了一个BoundedCapacity,但它看起来只会影响输入队列 所以我的块继续处理输入和输出队列不断增长。
以下块也指定了BoundedCapacity
,然后我的所有项目都堆叠在TransformManyBlock
的输出队列中,占用了我所有的RAM。
答案 0 :(得分:0)
是的,你是对的,没有内置的机会来限制输出队列。这样做的方式就是要检查更多的开销,输出队列是否已满。
您应该检查的一件事是您用于添加邮件的方法。如果是Post
,它将在发布消息之前阻止该线程。但是,如果您正在使用SendAsync
,则应该await
它,在其他情况下,您将使用await
- 状态机和正在发布的消息填充您的RAM。
但是,至少你可以做两件事:
BufferBlock
- this is default way以在数据流中添加一些限制。在这种情况下,如果没有地方,消息将不再继续处理您的数据流。如果您在彼此之间链接块,此解决方案将起作用。