是否可以在运行时传递Azure函数ServiceBusTrigger连接

093gszye  于 2023-02-25  发布在  其他
关注(0)|答案(4)|浏览(160)

我的代码看起来像这样:

public class Startup : IWebJobsStartup
{

  public async void Configure(IWebJobsBuilder builder)
   {

   Get Connection string Via HTTP Service.

       ServiceBusConnectionString = jArray["connectionString"].ToString();

   }

}

我想通过这样的连接

[FunctionName("FunctionTopicMessageLogger")]
        public  void Run([ServiceBusTrigger("topic", "FunctionTopicMessageLogger",Connection = **ServiceBusConnectionString** )]Message mySbMsg)
        {

        }

这是我第一次使用Local.setting.json文件

{
  "IsEncrypted": false,
  "Values": {

    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "Connectinstring": " "

  }
}

问题是连接仅采用常量参数(因此不允许更改),因此我尝试写入local.setting.json并尝试从那里读取它,当我第一次运行时,我得到错误,从第二次连接那里,所以它工作正常。
是我做错了什么请建议。

yqkkidmi

yqkkidmi1#

解决您的问题有两个重要部分。
1.在使用Service Bus触发器创建Azure函数的过程中,必须指定将用于检索连接字符串值的连接字符串参数的名称。在这种情况下,如果键入“ServiceBusConnectionString”,则必须在local.settings.json文件的“ConnectionStrings”部分中添加此类配置参数:

{
   "IsEncrypted": false,
   "Values": {
                "AzureWebJobsStorage": "UseDevelopmentStorage=true",
                "FUNCTIONS_WORKER_RUNTIME": "dotnet"
              },

 "ConnectionStrings": {
             "ServiceBusConnectionString": "xxx"
  }
}

1.将您的函数部署到Azure后,您应使用门户中的“配置”部分,并应避免使用“local.settings.json”文件,因为它仅用于本地开发:

我希望这会有所帮助。

nxowjjhe

nxowjjhe2#

如果你打算使用local.settings.json中的键Connectionstring,你应该可以通过以下操作自动从那里得到值:

public static void Run([ServiceBusTrigger("topic", "FunctionTopicMessageLogger", Connection = "connectionString")]string mySbMsg)

“连接”的值是local.settings.json文件中密钥的名称。

2g32fytz

2g32fytz3#

如果没有太多不同的服务总线,则可以为每个不同的connectionString创建一个函数。
每个函数在启动之前都需要知道connectionString,并开始等待服务总线中的消息。
如果您必须动态执行此操作,则不必使用Azure函数,您可以使用Service Bus SDK:
在此您可以看到如何手动管理客户端:https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-get-started-with-queues
希望这对你有帮助!

e7arh2l6

e7arh2l64#

这个答案来得有点晚,但使用Azure的应用配置是可能的。它的工作原理有点像KeyVault,只是这些不是加密值。然后,你可以在运行时切换ServiceBusConnectionString。
这不允许您将其作为常量插入,但允许您在运行时切换ConnectionString。

相关问题