如何在C#中使用Azure WebJobs

Azure WebJobs使您可以轻松地在Microsoft Azure中计划和执行后台任务。 Azure WebJobs SDK通过声明性绑定和触发器管理功能简化了创建后台任务的工作。 然后,可以用三种不同的方式执行Azure WebJob:它们可以连续运行,也可以按预定义的时间表运行,甚至可以按需运行。 在本文中,我们将研究如何在.Net中构建和部署Azure WebJob。

首先,您应确保已安装Visual Studio 2017和所有最新更新。 您还将需要包括Azure功能和Web作业工具在内的Azure SDK。 您可以通过选择工具->获取工具和功能,在Visual Studio中安装Azure开发工具。 通过选择“工具”->“扩展和更新”,可以确保您具有Azure函数和Web作业工具的最新更新。

[入门: Azure云迁移指南 •教程: Google Cloud入门 | 通过InfoWorld的云计算新闻通讯了解云计算的最新发展。 ]

在Visual Studio中创建一个Azure WebJob项目

假设您已在系统中安装了Visual Studio以及Azure函数和Web作业工具,则可以按照以下步骤在Visual Studio中创建一个新的Azure WebJob项目。

  1. 打开Visual Studio IDE
  2. 单击文件->新建->项目
  3. 在“新建项目”对话框窗口中,选择“云”组
  4. 从项目模板列表中选择Azure WebJob
  5. 指定项目的名称和位置,然后单击“确定”保存

这将在Visual Studio中创建一个WebJob项目。 接下来,在“解决方案资源管理器”窗口中右键单击项目,选择“管理解决方案的NuGet软件包”,然后通过NuGet软件包管理器安装以下NuGet软件包的更新。

  • Microsoft.Azure.KeyValue.Core
  • Microsoft.Azure.WebJobs
  • Microsoft.Azure.WebJobs.Core
  • Microsoft.Azure.WebJobs.Extensions

在.Net中构建一个简单的Azure WebJob

由于Azure WebJob项目与控制台应用程序相似,因此默认情况下,您的项目将具有Program.cs文件。 该Program.cs文件将包含Main方法-程序的入口点。 您可以在此处指定WebJob的配置元数据。

让我们看一下Program.cs文件中的Main函数。 Main的默认版本如下所示:

static void Main()
        {
            var config = new JobHostConfiguration();
            if (config.IsDevelopment)
            {
                config.UseDevelopmentSettings();
            }
            var host = new JobHost(config);
            host.RunAndBlock();
        }

我们将编辑此默认版本以创建我们自己的Main。 以下代码段说明了如何创建JobHostConfiguration实例和配置WebJob的属性。

static void Main()
        {
            var config = new JobHostConfiguration();
            config.UseTimers();
            config.Queues.MaxDequeueCount = 2;
            config.Queues.MaxPollingInterval =
            TimeSpan.FromSeconds(10);
            config.Queues.BatchSize = 10;
            var host = new JobHost(config);
            host.RunAndBlock();
        }

在我们新版的Main中,在配置对象上调用UseTimers()方法,以便我们可以在将要使用的函数中利用计时器。 请注意Queues集合的MaxDequeueCount和MaxPollingInterval属性的用法,该属性与JobHostConfiguration类的实例有关。 MaxDequeueCount用于指定函数在出现错误时将尝试处理特定消息的次数。 (此属性的默认值为5。)MaxPollingInterval用于指定最大轮询间隔,即WebJob在两次队列检查之间等待的最长时间。

这里还有另一个重要的属性值得讨论。 BatchSize属性用于指定WebJob将作为批处理的一部分处理的项目数。 在这里,我们将BatchSize指定为10。因此,如果队列中有10个或更多项目,那么并行处理的项目将不超过10个。

Azure WebJobs的编写功能

在创建的WebJob项目中,将有一个名为Functions.cs的文件,其中包含一个名为Functions的类。 这是该类最初的外观。

public class Functions
    {
        public static void ProcessQueueMessage([QueueTrigger(“queue”)] string message, TextWriter log)
        {
            log.WriteLine(message);
        }
    }

您将不需要调用您在此处编写的函数,因为它们将根据定义的触发器自动调用。 触发器分为三种,即QueueTrigger,ErrorTrigger和TimerTrigger。

这是一个简单的QueueTrigger供您参考。

public static void ProcessQueueMessage([QueueTrigger(“idgmessage”)] string message, TextWriter log)
        {
            log.WriteLine(“This will execute when there is a message in the queue”);
            log.WriteLine(message);
        }

这是一个TimerTrigger的简单示例。

公共静态无效ProcessQueueBasedOnTimer([TimerTrigger(“ * / 5 * * * * *”)] TimerInfo计时器)
{
Console.WriteLine(“这应根据时间表执行”);
}
此处显示的TimeTrigger将根据指定的cron表达式定期调用。 cron表达式“ * / 5 * * * * *”表示触发器将每五秒钟触发一次。

部署您的Azure WebJob

创建WebJob及其应执行的功能后,就该将其发布到Azure了。 为此,只需在“解决方案资源管理器”窗口中右键单击该项目,然后选择“发布为Azure WebJob”。 请注意,您应该具有一个可用的Azure Web App来承载WebJob。 您可以选择发布目标为“导入”,然后导入发布配置文件。 或者,您可以选择发布目标为“ Microsoft Azure App Service”,然后按照步骤进行操作。

在开发应用程序时,我们经常会希望以预定的时间间隔自动执行相关任务。 Azure WebJobs提供了一种很好的简单方法,可以在Microsoft Azure云的后台运行计划的作业。

From: https://www.infoworld.com/article/3285971/how-to-work-with-azure-webjobs-in-c.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值