Azure WebJobs 和服务总线:同一事物的 2 个设置?

Azure WebJobs and Service Bus : 2 settings for the same thing?

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

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

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

感谢您的帮助!

It seems they are both used to define the Service Bus connection string. Can I get rid of one of them?

根据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);

如果您想创建服务总线客户端实例(例如 QueueClient)来执行某些特定操作,您可以使用在 appSettings 中配置的服务总线连接字符串。

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