gpt4 book ai didi

Azure 存储队列触发器 - 使用远程队列名称

转载 作者:行者123 更新时间:2023-12-02 07:23:05 25 4
gpt4 key购买 nike

我正在使用 Azure 应用程序配置存储来存储配置。我在 startup.cs 中使用以下代码从 Azure 加载我的配置。

var builder = new ConfigurationBuilder();

builder.AddAzureAppConfiguration(options =>
{
options.Connect(this.Values.AppConfigConnectionString);
options.Select(keyFilter: KeyFilter.Any, labelFilter: this.Values.Env);
});

var config = builder.Build();

现在这个config变量包含我的队列名称。我需要这种动态,以便在 4 个不同的环境中创建和处理它。开发/阶段/质量检查/产品。

public async Task Run(
[QueueTrigger("%QueueName%", Connection = "StorageConnection")]VoiceHubEvent item)

这不起作用,因为我的 local.settings.json 文件不包含 QueueName 条目。

是否可以在Run()中使用config变量来解析队列名称?通过重载队列触发函数什么的?

谢谢,基兰。

最佳答案

Is it possible to make use of config variable in Run() to resolve queuename? By reloading queue trigger function or something?

是的,可以。

为 IWebJobsBuilder 接口(interface)创建扩展方法以设置与 AzureAppConfiguration 的连接。

public static IWebJobsBuilder AddAzureConfiguration(this IWebJobsBuilder webJobsBuilder)
{
//-- Get current configuration
var configBuilder = new ConfigurationBuilder();
var descriptor = webJobsBuilder.Services.FirstOrDefault(d => d.ServiceType == typeof(IConfiguration));
if (descriptor?.ImplementationInstance is IConfigurationRoot configuration)
configBuilder.AddConfiguration(configuration);

var config = configBuilder.Build();

//-- Add Azure Configuration
configBuilder.AddAzureAppConfiguration(options =>
{
var azureConnectionString = config[TRS.Shared.Constants.CONFIGURATION.KEY_AZURECONFIGURATION_CONNECTIONSTRING];

if (string.IsNullOrWhiteSpace(azureConnectionString)
|| !azureConnectionString.StartsWith("Endpoint=https://"))
throw new InvalidOperationException($"Missing/wrong configuration value for key '{TRS.Shared.Constants.CONFIGURATION.KEY_AZURECONFIGURATION_CONNECTIONSTRING}'.");

options.Connect(azureConnectionString);
});
//build the config again so it has the key vault provider
config = configBuilder.Build();


return webJobsBuilder;
}

azureConnectionString 是从 appsetting.json 读取的,并且应包含 Azure 应用程序配置的 URL。

在startup.cs中:

    public void Configure(IWebJobsBuilder builder)
{
builder.AddAzureConfiguration();
ConfigureServices(builder.Services)
.BuildServiceProvider(true);
}

更多详情可以引用这个SO thread .

关于Azure 存储队列触发器 - 使用远程队列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61320291/

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