如何确保只有一个Azure Web作业实例随时运行

时间:2014-03-13 11:31:44

标签: azure azure-webjobs

我在自动扩展的Azure网站上有一个持续运行的WebJob。

我的WebJob是一个简单的控制台应用程序,具有while(true)循环,可以订阅Azure服务总线上的某些消息并对其进行处理。我不想两次处理相同的消息,所以当网站被缩放时,另一个WebJob被启动我需要它来检测另一个实例已经在运行并且只是坐在那里做任何事情,直到它为止要么被杀死(再次缩小),要么被杀死。在最后一个场景中,第二个WebJob应该检测到另一个WebJob不再接管。

任何参赛者?

1 个答案:

答案 0 :(得分:4)

您应该创建一个队列(使用服务总线或存储队列)并关闭作业(创建和管理对该消息的租约)并从那里处理它们。如果正确管理该租约,则该作业应该只处理一次,但您应该确保它是幂等的,以防万一有边缘情况会多次处理它。