Получите один и тот же код триггера очереди функций Azure для назначения двух разных очередей в зависимости от настроек приложения

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

public static class ProdIndividualParse
{
#if DEBUG
    [FunctionName("TESTIndividualParse")]
    [Timeout("60:00:00")]
    public async static Task Run([QueueTrigger("parse-to-cosmos", Connection = "QueueAddress")]string myQueueItem, TraceWriter log)

#elif RELEASE
     [FunctionName("PRODIndividualParse")]
    [Timeout("10:00:00")]
    public async static Task Run([QueueTrigger("prod-cosmos-parse", Connection = "QueueAddress")]string myQueueItem, TraceWriter log)

#elif DEV
     [FunctionName("DEVIndividualParse")]
    [Timeout("10:00:00")]
    public async static Task Run([QueueTrigger("dev-cosmos-parse", Connection = "QueueAddress")]string myQueueItem, TraceWriter log)

#endif

(не знаю, как правильно отформатировать это с помощью знаков "#")

Я попытался добавить пару ключ-значение в настройках среды разработки: CONFIGURATION DEV безрезультатно.

1 ответ

Решение

Имя очереди можно узнать из настроек приложения. Добавить настройку с именем например myqueuename а затем определить вашу функцию как

[FunctionName("IndividualParse")]
[Timeout("10:00:00")]
public async static Task Run([QueueTrigger("%myqueuename%", Connection = "QueueAddress")] 
    string myQueueItem, TraceWriter log)

Очевидно, что вы можете установить различные значения для сред Dev и Test Vs Prod, если они находятся в отдельных приложениях функций или слотах.

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