在 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 上取消服务结构参与者激活?的主要内容,如果未能解决你的问题,请参考以下文章

长时间运行的服务结构参与者提醒回调

在服务结构服务中存储取消令牌

服务结构参与者状态和列表

服务结构参与者提醒和重复消息

国内取消 “商用密码产品生产单位审批”鼓励更多企业参与密码产品研发

国内取消 “商用密码产品生产单位审批”鼓励更多企业参与密码产品研发