Microsoft在队列中触发的Azure WebJob的文档在哪里连续运行而不会超时和中止?

时间:2019-06-24 02:00:03

标签: azure azure-webjobs

我正在尝试了解要在队列上触发的Azure WebJob设置应该如何在云中连续运行而不会因超时而中止。

在队列中触发Web作业的想法是,它将连续运行,然后在将新项目添加到队列时触发您的功能。

它实际上的工作方式是:如果当前没有执行任何操作,并且在120秒的时间段内(可配置)没有任何内容添加到队列中,则您的Web作业将完全中止,并且将停止监听正在添加的项目排队。它将需要干预才能重新启动它。

Microsoft提供了一些有用的,过时的Web作业文档,并且它描绘了如何在C#中创建它的美好前景。

(是的,我已在应用程序服务上启用“始终在线”)

我可以将时间段配置为2小时,24小时等,但这不是防弹的。微软对运行触发的Web作业而不怠慢和中止的实际建议是什么?

实际的,始终在线的Web服务器不需要在闲置后重新启动服务主机。我期望网络工作无所不包。

有人请告诉我,微软对此有何指导?如果不存在,请告诉我为什么他们在没有任何良好实施模式指导的情况下广播功能。

1 个答案:

答案 0 :(得分:0)

我的解决方案是通过.zip文件将Azure Web作业部署为连续类型。而且它没有这样的问题。

首先创建一个.net核心控制台项目,并安装所有必需的nuget包->在Function.cs中编写队列触发函数->添加appsettings.json,将存储连接字符串放入其中(请注意,您还需要右键单击appsettings.json->选择“属性”->将“复制到输出目录”设置为“如果更新则复制”。

然后我在Visual Studio中发布项目->,右键单击您的项目->选择发布->在新窗口中,选择文件夹,然后选择路径(您可以保留默认路径),然后单击发布按钮:

enter image description here

发布完成后,您可以转到上一步中定义的路径(默认情况下,该路径如下所示:webjob222\bin\Release\netcoreapp2.1\publish

enter image description here

创建一个run.cmd文件,并将类似dotnet your_webjob_name.dll的内容写入run.cmd->,然后将此处的所有文件发送到一个.zip文件中。

导航到azure门户->您的Web应用程序->在左侧刀片中,选择webjobs->添加,上传.zip文件,并将“类型”设置为“连续”。

enter image description here

在创建webjobs之后,您可以进行测试。它在我这边工作正常,没有任何错误(我将webjobs闲置了大约45分钟,然后添加了队列消息,它工作正常)。这是webjobs的日志:

enter image description here