Azure WebJobs和Service Bus:同样的2个设置?

时间:2017-05-10 14:49:47

标签: azure-webjobs

当我将以下NuGet包添加到我的WebJob:Microsoft.Azure.WebJobs.ServiceBus 2.0.0时, app.config文件中添加了两个新项目。 它们似乎都用于定义Service Bus连接字符串。 我可以摆脱其中一个吗?

<connectionStrings>
  <add name="AzureWebJobsServiceBus" connectionString="..." />
</connectionStrings>

<appSettings>
  <!-- Service Bus specific app setings for messaging connections -->
  <add key="Microsoft.ServiceBus.ConnectionString" value="..." />
</appSettings>

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

它们似乎都用于定义Service Bus连接字符串。我可以摆脱其中一个吗?

根据ServiceBusConfiguration的源代码,WebJob Service Bus SDK(ServiceBusTrigger)将使用存储在connectionStrings部分下的连接字符串。

public string ConnectionString
{
    get
    {
        if (!_connectionStringSet)
        {
            _connectionString = AmbientConnectionStringProvider.Instance.GetConnectionString(ConnectionStringNames.ServiceBus);
            _connectionStringSet = true;
        }
        return _connectionString;
    }
    set
    {
        _connectionString = value;
        _connectionStringSet = true;
    }
}

您还可以在运行时设置连接字符串。

JobHostConfiguration config = new JobHostConfiguration();
config.UseServiceBus(new ServiceBusConfiguration() { ConnectionString = "" });
JobHost host = new JobHost(config);

如果要创建Service Bus Client的实例(例如QueueClient)来执行某些特定操作,可以使用appSettings中配置的Service Bus连接字符串。

//Use CloudConfigurationManager to read the connection string stored in appSettings
string connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
var client = QueueClient.CreateFromConnectionString(connectionString, "queueName");