Несколько строк подключения веб-задания Azure

Веб-задание Azure получает строку подключения из параметра конфигурации веб-приложения (которое запускает задание) - AzureWebJobsStorage. Мне нужно контролировать две очереди в разных хранилищах с помощью одного WebJob. Возможно ли каким-то образом иметь несколько строк подключения для веб-задания?


person minuzZ    schedule 12.05.2016    source источник
comment
Разве вы не можете добавить несколько строк подключения с разными именами и значениями?   -  person henrikmerlander    schedule 12.05.2016
comment
AFAIK Azure WebJob использует имя строки подключения по умолчанию AzureWebJobsStorage из родительского приложения.   -  person minuzZ    schedule 12.05.2016
comment
У вас есть пример кода, в котором вы используете строку подключения?   -  person henrikmerlander    schedule 12.05.2016
comment
@henmer, ты вообще знаком с веб-вакансиями? Пакет SDK для веб-заданий принимает в учетную запись строку подключения AzureWebJobsStorage из родительского приложения. Я не могу получить к нему доступ к веб-заданию, потому что веб-задание ничего не знает о том, где оно будет размещено.   -  person minuzZ    schedule 12.05.2016
comment
@minuzZ // AzureWebJobsStorage просто default, но не единственное. вы можете использовать несколько строк подключения.   -  person Youngjae    schedule 13.05.2016


Ответы (1)


В связи с этим постом возможно:

В вашем случае вы хотите привязать к разным учетным записям хранения, чтобы ваша функция выглядела так:

public static void JobQueue1(
    [QueueTrigger("queueName1"),
    StorageAccount("storageAccount1ConnectionString")] string message)
{

}

public static void JobQueue2(
    [QueueTrigger("queueName2"),
    StorageAccount("storageAccount2ConnectionString")] string message)
{

}

Вы также можете реализовать собственный INameResolver, если хотите получить строки подключения из конфигурации:

public class ConfigNameResolver : INameResolver
{
    public string Resolve(string name)
    {
        string resolvedName = ConfigurationManager.AppSettings[name];
        if (string.IsNullOrWhiteSpace(resolvedName))
        {
            throw new InvalidOperationException("Cannot resolve " + name);
        }

        return resolvedName;
    }
}

использовать это:

var config = new JobHostConfiguration();
config.NameResolver = new ConfigNameResolver();
...
new JobHost(config).RunAndBlock();

И ваши новые функции выглядят так:

public static void JobQueue1(
    [QueueTrigger("queueName1"),
    StorageAccount("%storageAccount2%")] string filename)
{

}

public static void JobQueue2(
    [QueueTrigger("queueName2"),
    StorageAccount("%storageAccount1%")] string filename)
{

}
  • storageAccount1 и storageAccount2 - это ключ строки подключения в appSettings
person Thomas    schedule 13.05.2016