从单个Web应用程序同时运行同一Azure WebJob的许多实例

时间:2017-06-17 07:26:59

标签: azure azure-webjobs azure-webjobssdk

我创建了一个简单的azure web作业,该作业从传入的网站中获取一些数据,解析它并将其添加到数据库中。

这只是一个简单的控制台应用程序(.exe文件),它接受一个参数。它已上传到Azure上的Web应用程序。

然而,我的印象是,这个webjob只会根据需要启动并完成多次。因此,如果我一个接一个地向webjob发出3个命令,我最终会同时运行3个webjob实例。

但是,它不起作用。我只能运行一次。其他两个命令失败。是否有可能在单个Web应用程序中拥有一个webjob并让它同时运行,而同一个webjob处理不同的东西也在运行?

2 个答案:

答案 0 :(得分:0)

根据我的经验,触发的WebJob无法同时运行。

我建议的是,不要手动触发作业,而是将其作为一个侦听队列的连续WebJob。然后发送包含所需每个运行参数的队列消息。连续队列侦听作业可以同时运行。

您需要稍微修改作业。它必须运行作业主机而不是在启动时触发逻辑,并且必须将逻辑移动到队列触发的函数。

答案 1 :(得分:0)

使用Azure WebJobs,您只能在应用服务计划中为每个主机运行一个webjob实例。

  

是否可以在单个Web应用程序中使用单个webjob并使其同时运行,同时处理不同内容的同一webjob也在运行?

是的,只要您将ASP扩展到所需的主机数量(相当于所需的并发webjobs数量)

最终,您应该查看Azure功能来处理此类工作负载。见this feedback request