Azure WebJob- QueueTrigger分段和生产

时间:2015-08-08 00:59:18

标签: message-queue production azure-webjobs staging

我有一个Azure WebJob,将用于登台和制作。适当环境的密钥在app.config文件中设置。

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似乎并不喜欢这样。我得到"属性参数必须是常量表达式,表达式类型...."有任何建议来设置它。我不想在队列触发器中硬编码值。 感谢

1 个答案:

答案 0 :(得分: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
    }

}

这是QueueNameResolver类:

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.
    }
}

希望这有帮助,