Azure Webjobs - 在app.config上定义QueueName触发器

时间:2014-06-27 15:23:35

标签: azure-webjobs azure-webjobssdk

随着Azure Webjobs 3.0.0 SDK的新版本宣布: http://azure.microsoft.com/blog/2014/06/18/announcing-the-0-3-0-beta-preview-of-microsoft-azure-webjobs-sdk/

  

改进的功能发现

     

我们添加了一个ITypeLocator和INameResolver,以便自定义WebJobs SDK的外观>功能。这样可以启用以下方案:

     
      
  1. 您可以定义QueueName不显式的功能。您可以从配置源读取队列名称,并在运行时指定此值。
  2.   
  3. 将功能发现限制为特定的类或程序集。
  4.   
  5. 索引时的动态函数:您可以在运行时定义函数签名。
  6.   

但是没有关于如何做的示例代码。

有没有人知道如何在运行时定义队列名称(例如从app.config开始)?

2 个答案:

答案 0 :(得分:3)

如果您在配置中利用新的INameResolver,您可以自己实现接口并在JobHostConfiguration中替换它。看看这个blog post我在这个主题上做了一个小POC。

答案 1 :(得分:0)

使用外部运行时服务定义队列名称:

public class QueueNameResolver : INameResolver
{
    public string Resolve(string practiceId)
    {
        //define in appsettings the queuename property
        return CloudConfigurationManager.GetSetting("queuname");
        //or some other service of your design
    }
}

在WebJob Code中,Program.cs:

    public void init()
    {
        // Retrieve storage account from connection string.            
        string azureJobStorageConnectionString = ConfigurationManager.ConnectionStrings["AzureWebJobsStorage"].ConnectionString;
        var config =
               new JobHostConfiguration(azureJobStorageConnectionString)
               {
                   NameResolver = new QueueNameResolver()
               };
        host = new JobHost(config);
        host.RunAndBlock();
    }

根据azure doco