我似乎无法弄清楚如何使用ServiceProxy
将呼叫发送到特定的命名分区,并且似乎也没有针对此的任何文档。这就是您要为Int64RangePartitionInformation
执行的操作
var partitionInformation = (Int64RangePartitionInformation)selectedPartition.PartitionInformation;
var partitionKey = ServicePartitionKey(partitionInformation.LowKey);
IListen listenerClient = ServiceProxy.Create<IListen>(uri,partitionKey );
但是似乎没有办法为
ServicePartitionKey
获取NamedPartitionInformation
。您是否在Uri
中包含分区名称? 最佳答案
ServicePartitionKey
具有带字符串的重载。
var partitionKey = new ServicePartitionKey("partitionName");
IListen listenerClient = ServiceProxy.Create<IListen>(uri,partitionKey);
您不需要做更多的事情。
但是,如果您不预先知道分区,则需要查询它们:
using(var client = new FabricClient())
{
var partitions = await client.QueryManager.GetPartitionListAsync(serviceName);
foreach (var partition in partitions)
{
var partitionInformation = (NamedPartitionInformation)partition.PartitionInformation;
var partitionKey = ServicePartitionKey(partitionInformation.Name);
IListen listenerClient = ServiceProxy.Create<IListen>(uri,partitionKey);
}
}