我正在开发一个 Azure WebJobs 可执行文件,我想将其与多个 Azure 网站一起使用。每个网站都需要自己的 Azure 存储队列。
我看到的问题是ProcessQueueMessage
要求将队列名称静态定义为第一个参数的属性inputText
。我宁愿让队列名称成为正在运行的 Azure 网站实例的配置属性,并让作业可执行文件在启动时在运行时读取该名称。
有什么办法可以做到这一点吗?
现在可以做到这一点。只需创建一个INameResolver
允许您解析 %(百分号)符号包围的任何字符串。例如,如果这是您指定了队列名称的函数:
public static void WriteLog([QueueTrigger("%logqueue%")] string logMessage)
{
Console.WriteLine(logMessage);
}
注意字符串周围有 %(百分号)符号logqueue
。这意味着作业系统将尝试使用INameResolver
您可以创建它,然后将其注册到您的工作中。
以下是解析器的示例,它仅采用百分号中指定的字符串并在配置文件的 AppSettings 中查找它:
public class QueueNameResolver : INameResolver
{
public string Resolve(string name)
{
return ConfigurationManager.AppSettings[name].ToString();
}
}
然后在您的 Program.cs 文件中,您只需将其连接起来:
var host = new JobHost(new JobHostConfiguration
{
NameResolver = new QueueNameResolver()
});
host.RunAndBlock();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)