Azure Webjobs — определение триггера имени очереди в app.config

#azure-webjobs #azure-webjobssdk

#azure-webjobs #azure-webjobssdk

Вопрос:

С новым выпуском Azure Webjobs 3.0.0 SDK было объявлено: http://azure.microsoft.com/blog/2014/06/18/announcing-the-0-3-0-beta-preview-of-microsoft-azure-webjobs-sdk/

Улучшено обнаружение функций

Мы добавили ITypeLocator и INameResolver, чтобы настроить внешний вид SDK WebJobs> для функций. Это позволяет использовать такие сценарии, как следующие:

  1. Вы можете определять функции, в которых имя очереди не является явным. Вы можете считывать имена очередей из источника конфигурации и указывать это значение во время выполнения.
  2. Ограничьте обнаружение функций определенным классом или сборкой.
  3. Динамические функции во время индексации: сигнатуру функции можно определить во время выполнения.

Но нет примера кода о том, как это сделать.

Кто-нибудь знает, как определить имя очереди во время выполнения (например, из app.config)?

Ответ №1:

Если вы воспользуетесь преимуществами нового INameResolver в конфигурации, вы можете создать собственную реализацию интерфейса и заменить его в конфигурации JobHostConfiguration. Взгляните на это сообщение в блоге, где я сделал небольшой комментарий по этой теме.

Комментарии:

1. Ссылка на сообщение в блоге не работает. Это пример того, почему ответ должен как минимум включать фрагменты кода, а не полагаться только на ссылку.

Ответ №2:

Чтобы использовать внешнюю службу времени выполнения для определения имени очереди:

 public class QueueNameResolver : INameResolver
{
    public string Resolve(string practiceId)
    {
        //define in appsettings the queuename property
        return CloudConfigurationManager.GetSetting("queuname");
        //or some other service of your design
    }
}
 

В коде WebJob Program.cs:

     public void init()
    {
        // Retrieve storage account from connection string.            
        string azureJobStorageConnectionString = ConfigurationManager.ConnectionStrings["AzureWebJobsStorage"].ConnectionString;
        var config =
               new JobHostConfiguration(azureJobStorageConnectionString)
               {
                   NameResolver = new QueueNameResolver()
               };
        host = new JobHost(config);
        host.RunAndBlock();
    }
 

согласно документу azure