在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;
}
}
感谢您的输入。
答案 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