我有一个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似乎不喜欢这样。我得到“一个属性参数必须是一个常量表达式,表达式类型.”有什么建议来安排这个吗。我不想硬编码值中的队列触发器。谢谢
发布于 2015-08-10 21:37:51
可以在运行时使用
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.
}
}希望这能帮上忙
https://stackoverflow.com/questions/31888567
复制相似问题