2016-06-12 66 views

回答

9

可以使用FabricClient枚舉分區:

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 
    } 
} 

請注意,你應該緩存GetPartitionListAsync的結果,因爲服務分區,不能沒有重新創建服務改變(你可以保持LowKey值的列表)。

另外,FabricClient也應儘可能共享(請參閱documentation)。

+0

好主意保留'LowKey'值的列表。感謝那。 –

+0

「共享」「FabricClient」是什麼意思? – jugg1es

+0

@ jugg1es這意味着您不必每次都創建一個新的'FabricClient'實例。 –