Ручная привязка функции WebJob SDK

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

class Program
{
    private static String ServiceBusConnectionString = ConfigurationManager.ConnectionStrings["Microsoft.ServiceBus.ConnectionString"].ConnectionString;

    static void Main()
    {
        var jobHostConfiguration = new JobHostConfiguration
        {
            ServiceBusConnectionString = ServiceBusConnectionString,
        };
        var jobHost = new JobHost(jobHostConfiguration);
        jobHost.RunAndBlock();
    }
}

public class QueueItem
{
    public String Name;
    public Int64 Id;
}

public class Functions
{
    public void ProcessQueueItem([ServiceBusTrigger("queue-name")] QueueItem queueItem)
    {
        // TODO: process queue item
    }
}

Проблема с приведенным выше кодом заключается в том, что имя очереди жестко запрограммировано в моей программе. Я хочу иметь возможность получить имя очереди из конфигурации, как я делаю со строкой подключения к очереди. К сожалению, атрибуты могут быть переданы только константы времени компиляции, поэтому я не могу передать некоторую статически инициализированную строку, полученную из конфигурации.

Я немного осмотрелся и не смог найти какой-либо другой способ настройки привязки функции служебной шины. Разве это просто невозможно?

1 ответ

Решение

Вы можете использовать обычай INameResolver выполнить то, что вы хотите.

Один из официальных примеров здесь описывает именно ваш сценарий. Посмотрите ShutdownMonitor функция в Functions.cs а затем на ConfigNameResolver учебный класс.

Другие вопросы по тегам