Ich habe einen mehrfach partitionierten Stateful-Dienst. Wie kann ich alle seine Partitionen auflisten und die Ergebnisse aggregieren, indem ich service remoting für die Kommunikation zwischen Client und Service verwende?Wie alle Partitionen aufgelistet werden und Ergebnisse aggregiert werden
1
A
Antwort
9
Sie die Partitionen FabricClient
mit aufzählbare können:
var serviceName = new Uri("fabric:/MyApp/MyService");
using (var client = new FabricClient())
{
var partitions = await client.QueryManager.GetPartitionListAsync(serviceName);
foreach (var partition in partitions)
{
Debug.Assert(partition.PartitionInformation.Kind == ServicePartitionKind.Int64Range);
var partitionInformation = (Int64RangePartitionInformation)partition.PartitionInformation;
var proxy = ServiceProxy.Create<IMyService>(serviceName, new ServicePartitionKey(partitionInformation.LowKey));
// TODO: call service
}
}
Beachten Sie, dass Sie sollten wahrscheinlich die Ergebnisse der GetPartitionListAsync
cachen, da Service-Partitionen können nicht ohne Neuerstellung der Service geändert werden (Sie können nur halten eine Liste der LowKey
Werte).
Darüber hinaus sollte FabricClient
auch so viel wie möglich geteilt werden (siehe documentation).
Gute Idee, die eine Liste von 'LowKey' Werten führt. Dank dafür. –
Was bedeutet "Teilen" von "FabricClient"? – jugg1es
@ jugg1es Dies bedeutet, dass Sie die Instanz von 'FabricClient' wiederverwenden, anstatt jedes Mal eine neue zu erstellen. –