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

В новом выпуске 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 для веб-заданий ›для функций. Это позволяет реализовать следующие сценарии:

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

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

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


person HobojoeBr    schedule 27.06.2014    source источник


Ответы (2)


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

person Rasmus Christensen    schedule 01.07.2014
comment
Ссылка на запись в блоге битая. Это пример того, почему ответ должен как минимум включать фрагменты кода, а не полагаться только на ссылку. - person Tim Murphy; 21.12.2015

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

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
    }
}

В коде веб-задания 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.

person OzBob    schedule 19.04.2016