gpt4 book ai didi

azure - Azure WebJobs SDK 3.0 中 'Settings.job' 和 'TimerTrigger' 之间有什么区别

转载 作者:行者123 更新时间:2023-12-05 09:13:13 24 4
gpt4 key购买 nike

有很多教程使用以下代码通过 WebJob SDK 3.0 库创建 Webjobs。特别是“TimerTrigger”

    public void DoSomethingUseful([TimerTrigger("0 */1 * * * *", RunOnStartup = false)] TimerInfo timerInfo, TextWriter log)
{
// Act on the DI-ed class:
string thing = _usefulRepository.GetFoo();
Console.WriteLine($"{DateTime.Now} - {thing}");
}

上面的示例应该每 1 分钟运行一次此方法作为网络作业。然而这不起作用。

当包含setting.job文件时,我已经设法让网络作业正常工作。

setting.job: {  "schedule": "0 */1 * * * *" }

我的问题是这两者有什么不同?

最佳答案

更新:

请转到azure webjobs日志,然后您可以看到它实际上是按照SDK定义的timerTrigger运行的(即使Schedule为n/a,settings.job为空,也没关系):

enter image description here

简而言之,当使用 webjob sdk 3.x 时,您可以使用 TimerTrigger 属性按照您定义的时间运行函数。在不使用webjobs SDK(例如使用.zip文件或从Visual Studio发布控制台项目)的情况下,您可以使用setting.job来定义计时器而不是TimerTrigger属性。

1.当您使用 webjobs SDK 3.x 进行定时器触发时,您应该添加这行代码: config.AddTimers();

这是我使用 webjobs SDK 3.x 的代码(它是在 Visual Studio 中创建的 .net core 2.2 控制台项目):

最新版本的软件包:Microsoft.Azure.WebJobs/Microsoft.Azure.WebJobs.Extensions/Microsoft.Extensions.Logging.Console >

Program.cs中的代码:

    class Program
{
static void Main(string[] args)
{
var builder = new HostBuilder()
.ConfigureWebJobs(config =>
{
config.AddTimers();
config.AddAzureStorageCoreServices();
})
.ConfigureLogging((context, b) =>
{
b.AddConsole();
}
)
.Build();

builder.Run();
}
}

然后创建一个新文件,例如 SayHelloWebJob.cs,并在其中编写代码:

    public class SayHelloWebJob
{
public void ProcessCollateFiles([TimerTrigger("0 */1 * * * *", RunOnStartup = false)]TimerInfo timerInfo,TextWriter writer)
{
writer.WriteLine("hi, it is a testing running");
Console.WriteLine("test");
}
}

请注意,在 appsettings.json 文件中添加存储连接字符串,如下所示:

{
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net"
}

然后运行项目,可以看到该函数每1分钟触发一次:

enter image description here

2.对于settings.job,例如。如果您只是创建一个控制台项目,并且不使用 webjobs sdk。由于您没有使用 webjobs sdk,因此无法使用 timerTrigger 属性。此时,您可以在此项目中包含 settings.job 文件(在其属性中,将“复制到输出目录”设置为“如果较新则复制”),并像您在帖子中所做的那样配置计划的计时器。发布为 webjob 后(在 Visual Studio 中,发布时选择“Webjob 运行模式”为“按需运行”),它可以按照您在 settings.job 中定义的计划运行。

关于azure - Azure WebJobs SDK 3.0 中 'Settings.job' 和 'TimerTrigger' 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56548441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com