Azure WebJob- QueueTrigger 暂存和生产

Azure WebJob- QueueTrigger Staging and Production

我有一个 Azure WebJob 将用于暂存和生产。正确环境的密钥在 app.config 文件中设置。

ConfigManager class 从 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 似乎不喜欢这样。我收到 "An attribute argument must be a constant expression, type of expression...." 任何有关设置的建议。我不想在队列触发器中对值进行硬编码。 谢谢

您可以在运行时使用

解析队列名称

INameResolver

这里有一个例子来证明这一点:

网络工作代码:

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 class:

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

希望这对您有所帮助,