删除Service Fabric Cluster中的无状态服务时出错

时间:2017-10-18 12:41:39

标签: azure-service-fabric service-fabric-stateless

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

更新:Runasync方法

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

    }

感谢您的输入。

1 个答案:

答案 0 :(得分:2)

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

如果您的服务在合理的时间内没有响应这些API调用,Service Fabric可以强行终止您的服务。通常,这仅在应用程序升级期间或正在删除服务时发生。默认情况下,此超时为15分钟。

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