Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用第三方物流数据流:如何确保同一类别的项目按照它们到达的顺序进行处理?_C#_Tpl Dataflow - Fatal编程技术网

C# 使用第三方物流数据流:如何确保同一类别的项目按照它们到达的顺序进行处理?

C# 使用第三方物流数据流:如何确保同一类别的项目按照它们到达的顺序进行处理?,c#,tpl-dataflow,C#,Tpl Dataflow,在研究一个问题时,我偶然发现了TPL数据流对象,它们似乎是我正在构建的解决方案的理想工具,只是我看不到如何按顺序处理各类消息 假设我正在使用来自某个代理的消息。 消息的属性之一是类别/分组号。 我可以并行处理类别1、2和3的消息,但我必须按照它们到达的顺序处理每个类别的所有消息 任何时候都可能有2万到5万个类别处于活动状态,一个类别可以保持活动状态12个月(很少更长,但可以持续数年) 这些消息没有可用的序列号或时间戳 在一分钟内收到的1000条信息中,他们可以 每一种都可以用于不同的类别 许多

在研究一个问题时,我偶然发现了TPL数据流对象,它们似乎是我正在构建的解决方案的理想工具,只是我看不到如何按顺序处理各类消息

假设我正在使用来自某个代理的消息。 消息的属性之一是类别/分组号。 我可以并行处理类别1、2和3的消息,但我必须按照它们到达的顺序处理每个类别的所有消息

任何时候都可能有2万到5万个类别处于活动状态,一个类别可以保持活动状态12个月(很少更长,但可以持续数年)

这些消息没有可用的序列号或时间戳

在一分钟内收到的1000条信息中,他们可以

  • 每一种都可以用于不同的类别
  • 许多人选择独特的类别,但很大一部分随机分布在一系列类别中
  • 由几百个不同的类别分组,几乎成批出现
一个给定的类别可以在5分钟到几个小时内高度活跃(在这段时间内收到1000条消息),然后在再次高度活跃之前的几天或几周内逐渐减少到不经常发生的情况。 几个月后,我们可能再也看不到一个类别了


TPL数据流能否并行处理来自不同类别的消息,同时顺序处理每个类别中的消息。如果是这样,如何使用?

您使用的是什么消息代理?大多数消息代理都支持您的请求,这是一个常见的使用案例:。或者,你可以考虑使用A。你应该使用每个类别的队列,不要启动下一个项目,直到当前完成。数据流块保存所有消息的顺序,即使DOP>1。如果有DOP>1的
TransformBlock
,则输出T2消息的顺序与输入T1消息的到达顺序相同。如果必须的话,一个块将延迟发出一条消息,例如M3,直到发出之前的消息M1和M2。如果该块保持顺序,那么您想要解决的实际问题是什么?您使用的是什么MessageBroker?大多数消息代理都支持您的请求,这是一个常见的使用案例:。或者,你可以考虑使用A。你应该使用每个类别的队列,不要启动下一个项目,直到当前完成。数据流块保存所有消息的顺序,即使DOP>1。如果有DOP>1的
TransformBlock
,则输出T2消息的顺序与输入T1消息的到达顺序相同。如果必须的话,一个块将延迟发出一条消息,例如M3,直到发出之前的消息M1和M2。如果这个块保持顺序,那么您想要解决的实际问题是什么?