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