azure-service-fabric - 访问 ActorService 以获取所有演员的列表
问题描述
尝试学习 Azure Service Fabric 的基础知识。我有一个应用程序在我创建了一个 UserActorService 的地方工作,我可以创建和检索演员以及在其中保存状态。但我不知道如何获得所有演员的名单。
我对这段代码有一些了解:
public async Task<List<string>> GetAllUserActors()
{
var fabricClient = new FabricClient();
var cancellationTokenSource = new CancellationTokenSource();
ContinuationToken continuationToken = null;
var result = new List<string>();
do
{
var page = await actorService.GetActorsAsync(continuationToken, cancellationTokenSource.Token);
result.AddRange(page.Items.Select(i => i.ActorId.ToString()).ToList());
continuationToken = page.ContinuationToken;
} while (continuationToken != null);
return result;
}
问题是我不知道我应该把它放在哪里。代码需要访问实际的 userActor 服务 ActorService。而在 UserActorService 中,我只能在 UserActor 中获得它。我想我可以把 UserActor 放在里面,然后调用一个单独的 UserActor 来让这个方法返回一个列表。
但这不应该是这样,因为我认为我不应该需要知道一个 UserActor 的 id 才能看到有哪些演员。
解决方案
您可以使用 SF Remoting - 从集群中的任何应用程序 - 获取数据:
IActorService actorServiceProxy = ActorServiceProxy.Create(
new Uri("fabric:/MyApp/MyService"), partitionKey);
ContinuationToken continuationToken = null;
List<ActorInformation> activeActors = new List<ActorInformation>();
do
{
PagedResult<ActorInformation> page = await actorServiceProxy.GetActorsAsync(continuationToken, cancellationToken);
activeActors.AddRange(page.Items.Where(x => x.IsActive));
continuationToken = page.ContinuationToken;
}
while (continuationToken != null);
确保通过传递它们各自的partitionKey
.
更多信息在这里。
推荐阅读
- javascript - 尽管设置了 maxzoom,但 Mapbox 栅格图块消失了
- python - 如何在pytorch中将模型配置日志保存为configs.yml?
- php - 通过付款人 ID 获取 PayPal 交易详情。PayPal 仅返回付款人 ID
- delphi - Delphi 2007 助手类无法访问私有方法
- python - 如果匹配来自同一行列的复制值,则比较并循环第二个数据帧中时间间隔的每一行
- javascript - Typescript - TypeError this.renderCell 不是函数
- regex - 使用 Google 表格 RE2 删除 2 个字符串之间的所有内容
- binary - 什么文件格式有这个神奇的标题?
- reactjs - 将 React 组件渲染为 svg
- javascript - 来自子 HTML 的变量集未反映在控制器中