【发布时间】:2018-10-30 23:25:51
【问题描述】:
我想添加一个服务,在系统首次创建时执行一些初始化操作。
我想这将是一个无状态服务(具有集群管理员权限),它应该在完成后自毁。我是under the impression that exiting the RunAsync function 允许我表明我已完成(或处于错误状态)。但是,它仍然在应用程序的上下文中徘徊,并且在它根本没有真正做任何事情时看起来就像是“活跃的”。
服务是否可以自行移除?
我想也许我们可以尝试在OnCloseAsync 覆盖中使用FabricClient.ServiceManager 的DeleteServiceAsync(使用基于服务上下文的参数),但我无法证明这可能有效,而且感觉小时髦:
var client = new FabricClient();
await client.ServiceManager.DeleteServiceAsync(new DeleteServiceDescription(Context.ServiceName));
有没有更好的办法?
【问题讨论】:
-
Afaik 不是。完成 runasync 不是服务的触发器,因为它与打开通信侦听器并行运行。因此,您的想法可能是目前最好的方法。:在 runasync 中尝试删除自身。或者使用外部服务来监控完成并让它删除它(因为我不知道服务是否可以删除自己)
标签: service-fabric-stateless azure-service-fabric