1
我有一個多分區有狀態服務。如何枚舉所有分區和聚合結果,使用service remoting進行客戶端和服務之間的通信?如何枚舉所有分區和聚合結果
我有一個多分區有狀態服務。如何枚舉所有分區和聚合結果,使用service remoting進行客戶端和服務之間的通信?如何枚舉所有分區和聚合結果
可以使用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)。
好主意保留'LowKey'值的列表。感謝那。 –
「共享」「FabricClient」是什麼意思? – jugg1es
@ jugg1es這意味着您不必每次都創建一個新的'FabricClient'實例。 –