1

在 Service Fabric 集群中,我有一个无状态服务,它有一个 while(true) 循环在 RunAsync 方法中连续运行。由于这个while循环,我发现很难从集群中删除应用程序。每次我尝试删除时都会发生错误,说明无法分离进程。通常我会尝试部署应用程序一次以删除代码。要在应用程序之上重新部署代码,我必须部署两次。在不删除无限while循环的情况下是否有解决方法。

更新:Runasync 方法

protected override async Task RunAsync(CancellationToken cancellationToken)
    {
        //making sure the thread is active 
        while (true)
        {
           do something;
        }

    }

谢谢你的反馈。

4

1 回答 1

3

在关闭期间,传递给 RunAsync 的取消令牌被取消。您需要在主循环中检查取消令牌的 IsCancellationRequested 属性。当这变为真时,如果调用,令牌的 ThrowIfCancellationRequested 方法将引发 OperationCanceledException。

如果您的服务未在合理的时间内响应这些 API 调用,Service Fabric 可以强制终止您的服务。通常这只发生在应用程序升级或服务被删除时。此超时默认为 15 分钟。

请参阅此文档以获得良好的参考:https ://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-lifecycle#stateless-service-shutdown

于 2017-10-19T09:38:30.987 回答