2015-08-08 9 views
1

У меня есть Azure WebJob, который будет использоваться для постановки и производства. Клавиши для правильной среды устанавливаются в файле app.config.Azure WebJob- QueueTrigger Staging and Production

Класс ConfigManager считывает свойства из файла app.config.

public static string FirstQueue 
{ 
    get { return ConfigurationManager.AppSettings["FirstQueue"]; } 
} 

Я хотел бы QueueTrigger прочитать от правильной очереди, заданной в файле app.config.

public static void ProcessFirstQueue([QueueTrigger(ConfigManager.FirstQueue)] string message) 
{ 
    //some function  
} 

Однако QueueTrigger похоже не нравится. Я получаю «Аргумент атрибута должен быть постоянным выражением, типом выражения ...». Любые предложения по настройке. Я не хочу жестких значений кода в триггере очереди. Благодаря

ответ

2

Вы можете разрешить имя очереди во время выполнения с помощью

INameResolver

Вот пример, чтобы продемонстрировать это:

WebJob Код:

public class Program 
{ 
    private static void Main(string[] args) 
    { 
     var config = 
      new JobHostConfiguration("insert connection string") 
      { 
       NameResolver = new QueueNameResolver() 
      }; 
     var host = new JobHost(config); 

     host.RunAndBlock(); 
    } 

    public static void ProcessNotification([QueueTrigger("%queueKey%")] string item) 
    { 
     //Handle message 
    } 

    public static void ProcessPoison([QueueTrigger("%queueKeyPoison%")] string item) 
    { 
     //Handle poison message 
    } 

} 

Вот QueueNa meResolver класс:

public class QueueNameResolver : INameResolver 
{ 
    //name = queueKey or queueKeyPoison 
    public string Resolve(string name) 
    { 
     //Use the name to get it from the app.config or somewhere else. 
    } 
} 

Надеется, что это помогает,

+0

Это работает. Большое спасибо за вашу помощь! – Jrod

+0

Рад, что я смог помочь. Пожалуйста, отметьте это как ответ, если он решит вашу проблему :) – lopezbertoni

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

  • Нет связанных вопросов^_^