私はに新規です。TPL Dataflowと私は均等に分散されたソースメッセージのリストを分割できる構造を探しています個々のパイプラインを介してメッセージメッセージの順序を維持しながら並列処理を行う。これを達成するために使用できるDataFlow API内の特定のブロックまたはコンセプトがあるか、または既存のブロック間にグルーコードまたはカスタムブロックを提供することが重要ですか?TPLデータフローを使用してメッセージを一貫性のあるセットにルーティング、グループ化、または分割する方法
Akka.NETに慣れている人には、ConsistentHashing routerと似た機能を探しています。これらの機能は、単一のルータにメッセージを送信し、これらのメッセージを個々のルートに転送して処理されるようにします。
同期例:私はあなたが探しているものはないと思う一般的に
var count = 100000;
var processingGroups = 5;
var source = Enumerable.Range(1, count);
// Distribute source elements consistently and evenly into a specified set of groups (ex. 5) so that.
var distributed = source.GroupBy(s => s % processingGroups);
// Within each of the 5 processing groups go through each item and add 1 to it
var transformed = distributed.Select(d => d.Select(i => i + 3).ToArray());
List<int[]> result = transformed.ToList();
Check.That(result.Count).IsEqualTo(processingGroups);
for (int i = 0; i < result.Count; i++)
{
var outputGroup = result[i];
var expectedRange = Enumerable.Range(i + 1, count/processingGroups).Select((e, index) => e + (index * (processingGroups - 1)) + 3);
Check.That(outputGroup).ContainsExactly(expectedRange);
}