【问题标题】:Azure WebJob- QueueTrigger Staging and ProductionAzure WebJob-QueueTrigger 暂存和生产
【发布时间】:2015-08-08 00:59:17
【问题描述】:

我有一个将用于暂存和生产的 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 似乎不喜欢这样。我得到“一个属性参数必须是一个常量表达式,表达式类型......”任何设置它的建议。我不想在队列触发器中硬编码值。 谢谢

【问题讨论】:

    标签: message-queue production azure-webjobs staging


    【解决方案1】:

    您可以在运行时使用

    解析队列名称

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

    希望这会有所帮助,

    【讨论】:

    • 很高兴我能提供帮助。如果它确实解决了您的问题,请将其标记为答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多