2015-11-02 3 views
1

У меня есть C# WebJob, который использует QueueTrigger с пользовательским INameResolver для поиска имен очередей из настроек приложения. Эта часть работает так, как ожидалось, но теперь внутри тела метода мне нужно знать имя очереди, из которой было получено инициирующее сообщение. В идеале я хотел бы просто добавить в свой метод специально названный строковый параметр, который будет заполнен именем очереди запуска с помощью SDK WebJobs, но documentation не упоминает какой-либо такой связанный параметр.Как я могу получить имя запускающей очереди во время выполнения?

Есть еще один способ для достижения этой цели, предпочтительно без жесткого кодирования имени очереди/образца в двух местах (то есть один раз в атрибуте QueueTrigger и снова внутри тела метода) или записи пользовательских строк разбора коды вручную вызвать мой INameResolver для %patterns%?

ответ

2

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

public static void MyFunction(
 
    [QueueTrigger("%name%")] string message, 
 
    [Queue("%name%")] CloudQueue queue) 
 
{ 
 
    string queueName = queue.Name; 
 
}

Альтернатива, как вы предложили - сделать свой обычай INameResolver например доступен для вашей работы (например, через DI) и просто вызвать resolver.Resolve, чтобы получить имя.

Смежные вопросы