从带有Service Bus触发器的Azure功能中的配置中引用主题和订阅名称

时间:2019-02-22 13:40:27

标签: azure azure-functions azureservicebus azure-servicebus-topics

我有一个带有Service Bus Topic触发器的Azure Service Bus。我的功能看起来像这样

[FunctionName("SbListener")]
        public static async Task Run(
            [ServiceBusTrigger("test-topic", "test-sub-1", Connection = "ServiceBus")]string message, 
            [Inject("Microsoft.EventStore.Functions", true)] IWebNotificationManagerFactory webNotificationManagerFactory,
            [Inject("Microsoft.EventStore.Functions", true)] ILogger logger)
        { ... }

我的服务总线的配置位于local.settings.json文件中。

"ConnectionStrings": {
    "ServiceBus": "Endpoint=sb://<my-sb>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<my-key>"
}

我正在寻找的是,我也想从配置文件中引用主题名称,而不是在ServiceBusTrigger中对其进行硬编码。问题是,如果我更改了订阅名称,那么我将不得不重新部署功能代码(我想不惜一切代价避免这样做)。

1 个答案:

答案 0 :(得分:1)

将主题和订阅放在local.settings.json(门户中的应用程序设置)的Values中,并使用应用程序设置绑定表达式引用它们-用%包裹应用程序设置名称,选中{ {3}}。

[ServiceBusTrigger("%Topic%", "%Subscription%", Connection = "ServiceBus")]string message

此外,我建议您也将ServiceBus连接字符串放在Values中,ConnectionStrings由通常从配置文件的ConnectionStrings部分获取连接字符串的框架使用。作为实体框架。参见doc