gpt4 book ai didi

asp.net-core - 如何使用 HostBuilder 进行 WebJob?

转载 作者:行者123 更新时间:2023-12-02 01:35:37 28 4
gpt4 key购买 nike

.Net 2.0 引入了真正有用的控制台应用程序 HostBuilder,就像我们为 Web 应用程序提供的 WebHostBuilder 一样。

我现在关心的是如何使用带有 QueueTrigger 的 WebJob 来实现 HostBuilder?

到目前为止,我一直在使用 JobActivator:

        var startup = new Startup();
var serviceProvider = startup.ConfigureServices(new ServiceCollection());
startup.Configure(serviceProvider);

var jobHostConfiguration = new JobHostConfiguration()
{
JobActivator = new JobActivator(serviceProvider),
};

var host = new JobHost(jobHostConfiguration);
host.RunAndBlock();

对于完整的示例,这是我的代码: https://github.com/ranouf/DotNetCore-CosmosDbTrigger-WebJob/tree/master/CosmosDbTriggerWebJob.App

是否有人已经将 HostBuilder 用于带有 QueueTrigger 的 WebJob?可能吗?

谢谢

最佳答案

那时我就明白了这一点。首先确保您已升级软件包以使用相应 WebJob 软件包的最新 v3 版本。

我发现我需要以下内容:

  1. Microsoft.Azure.WebJobs
  2. Microsoft.Azure.WebJobs.Core
  3. Microsoft.Azure.WebJobs.Extensions.ServiceBus

然后您可以在 Console 项目的 Main 方法中使用构建器,如下所示:

 static async Task Main()
{
var builder = new HostBuilder();
builder.ConfigureAppConfiguration(cb =>
{
cb.AddJsonFile("appsettings.json");
});
builder.ConfigureWebJobs(b =>
{
b.AddServiceBus();
});
await builder.RunConsoleAsync();
}

请注意,我已启用语言功能 7.1 以支持异步 Main 方法。如果您愿意,可以使用“Wait()”。然后我将 appsettings.json 文件添加到我的项目中,如下所示:

{
"ConnectionStrings": {
"AzureWebJobsServiceBus": "Endpoint=sb://..."
}
}

(编辑:并确保文件始终复制到输出文件夹)最后也是最重要的是,我修改了触发器函数以包含连接的名称,如下所示:

    public static void ProcessQueueMessage([ServiceBusTrigger("[Your Queue Name]", Connection = "AzureWebJobsServiceBus")] string message, TextWriter log)
{
log.WriteLine(message);
}

尽管连接的名称是默认名称,但我似乎仍然必须在函数属性中定义它。我也尝试过“值(value)观”方法,但没能成功。然后我开始从服务总线接收消息。

关于asp.net-core - 如何使用 HostBuilder 进行 WebJob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51970969/

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