Azure Триггер очереди хранилища - использовать имя удаленной очереди - PullRequest
0 голосов
/ 20 апреля 2020

Я использую Azure App Configuration Store для хранения конфигурации. Я использую следующий код в 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 содержит имена моих очередей. Мне нужен этот динамик c, чтобы создавать и обрабатывать его в 4 различных средах. Dev / Stage / QA / Prod.

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

Это не работает, так как мой local.settings.json файл не содержит записи QueueName.

Можно ли использовать переменную config в Run() для разрешения имени очереди? Перезагружая функцию запуска очереди или что-то?

Спасибо, Киран.

1 Ответ

0 голосов
/ 21 апреля 2020

Можно ли использовать переменную config в Run () для разрешения имени очереди? Перезагружая функцию триггера очереди или что-то?

Да, вы можете.

Создать метод расширений для интерфейса IWebJobsBuilder, чтобы установить соединение с 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 читается из вашей настройки приложения. json и должен содержать URL-адрес Azure Конфигурации приложения.

В файле startup.cs:

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

Для получения дополнительной информации подробности, вы можете обратиться к этой теме SO .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...