Ручная привязка функции 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
учебный класс.