手动WebJob SDK功能绑定

时间:2014-10-26 00:39:44

标签: c# azure-webjobs azure-webjobssdk

我有一个我想要消耗的服务总线队列。我发现的所有样本都建议写这样的东西:

class Program
{
    private static String ServiceBusConnectionString = ConfigurationManager.ConnectionStrings["Microsoft.ServiceBus.ConnectionString"].ConnectionString;

    static void Main()
    {
        var jobHostConfiguration = new JobHostConfiguration
        {
            ServiceBusConnectionString = ServiceBusConnectionString,
        };
        var jobHost = new JobHost(jobHostConfiguration);
        jobHost.RunAndBlock();
    }
}

public class QueueItem
{
    public String Name;
    public Int64 Id;
}

public class Functions
{
    public void ProcessQueueItem([ServiceBusTrigger("queue-name")] QueueItem queueItem)
    {
        // TODO: process queue item
    }
}

上面代码的问题是队列名称在我的程序中是硬编码的。我希望能够像配置队列连接字符串一样从配置中获取队列名称。不幸的是,属性只能传递编译时常量,因此我无法传递来自配置的一些静态初始化字符串。

我环顾四周,无法找到任何其他方法来设置Service Bus功能绑定。这是不可能的吗?

1 个答案:

答案 0 :(得分:1)

您可以使用自定义INameResolver来完成您想要的任务。

其中一个官方样本here涵盖了您的情景。查看ShutdownMonitor中的Functions.cs功能,然后查看ConfigNameResolver课程。