Azure如何中断工作角色进行部署



我正在将一些后台处理从Azure web角色转移到工作者角色。我的员工需要每分钟左右完成一项任务,可能会产生任务:

while(true){
//start some tasks
Thread.Sleep(60000);
}

一旦我部署,它将永远运行。那么,稍后,当我重新部署时,Azure如何停止我的重新部署过程

它会立即杀死它吗?有没有办法得到它正在关闭的警告?我只需要确保一切都是事务性的吗?

当一个角色(工作者或web)被要求正常关闭时(因为它正在缩小规模或因为您要求重新部署),就会调用RoleEntryPoint类的OnStop方法。这是具有Run方法的同一个类,该方法可能包含您的循环或调用包含该循环的代码。

这里需要注意的几点是:OnStop有5分钟的时间真正停止,之后这个过程就被终止了。如果必须调用其他进程异步关闭,则需要OnStop中的线程一直忙于等待,直到其他进程关闭。一旦执行离开OnStop,平台就会认为机器可以关闭。

如果您需要正常停止处理,但不需要关闭机器,那么您可以在服务配置文件中放置一个设置,您可以更新该设置以指示应该完成或注意的工作。例如一个bool,上面写着"ProcessQueues"。然后在RoleEntryPoint中的onStart中挂接RoleEnvironmentChanging事件。然后,事件处理程序会查找要发生的RoleEnvironmentConfigurationSettingChange,然后检查ProcessQueues布尔。如果为true,则启动或继续处理;如果为false,则正常停止处理。然后,您可以更改配置来控制事情何时运行。这是处理这个问题的一种选择,还有更多的选择,这取决于你需要多快停止处理,等等

最新更新