在 ActivateAsync 上取消服务结构参与者激活?
Posted
技术标签:
【中文标题】在 ActivateAsync 上取消服务结构参与者激活?【英文标题】:Cancel service fabric actor activation on ActivateAsync? 【发布时间】:2018-05-18 23:41:09 【问题描述】:是否可以根据初始化代码和 ActorProxy.Create 返回 null 来取消 ActivateAsync 上的激活? 例如,Web 服务询问设备参与者的状态。具有此 ID 的设备实际上不存在。我可以在创建演员时返回 null 吗?
【问题讨论】:
【参考方案1】:不,有两个原因。
-
从
ActorProxy.Create
返回的对象是可以与(远程)Actor 交互的proxy,它不是 Actor 本身。
一个 Actor 会及时自动创建,如果它在与它交互时不存在,所以你不必担心它的life cycle。
要了解存在哪些 Actor,您可以与 ActorService 互动。
PagedResult<ActorInformation> page = await actorServiceProxy.GetActorsAsync(continuationToken, cancellationToken);
【讨论】:
那么,如果Actor没有实际代表的设备,客户端会发现它,当它调用actor的方法出错时?至少,在第一次方法调用期间可能会在 ActivateAsync 上引发错误,而不是在每个方法中进行这样的错误处理? 您可以创建一个参与者(或服务)来维护已知设备 ID 的列表,并在引用设备参与者之前检查它。这样可以节省您创建无法使用的设备 Actor 的开销。以上是关于在 ActivateAsync 上取消服务结构参与者激活?的主要内容,如果未能解决你的问题,请参考以下文章