我在 .NET core 2.0 中使用 Azure Function
创建 Queue Trigger
时遇到问题。
我想要的是
在 microservice
架构中,当在创建用户的队列中创建新消息时,服务必须接收此消息并根据其中的信息在数据库中创建用户。
问题
在 Visual Studio 2017 中,我在 Azure Function
下创建了一个新项目。
从 新模板 我选择 Queue Trigger
。
此屏幕与有关此主题的 Microsoft post 不同。无论如何,第一个问题是 Connection
和 Path
是什么。
我创建了一个 Service Bus
并且我有来自 Azure Portal
的凭证。我复制了 Primary Connection String
并且 Path
是我的队列名称。
如果我运行该项目,我会收到很多错误。我在 Azure Documentation
上找到了 simple trigger 的链接。在这个例子中,他们使用 ServiceBusTrigger
而不是 QueueTrigger
。为了解决 ServiceBusTrigger
,我从 Nuget 添加了 Microsoft.Azure.WebJobs.ServiceBus
。它似乎不起作用。
为了获得 Azure Function
的正确凭证,我在 Azure Portal
中创建了一个凭证并下载了 app content
。
看起来像
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_EXTENSION_VERSION": "beta",
"ScmType": "None",
"WEBSITE_AUTH_ENABLED": "False",
"AzureWebJobsDashboard": "DefaultEndpointsProtocol=https;AccountName=my;AccountKey=something",
"WEBSITE_NODE_DEFAULT_VERSION": "6.5.0",
"WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "DefaultEndpointsProtocol=https;AccountName=my;AccountKey=something",
"WEBSITE_CONTENTSHARE": "createprofile-98873b60",
"WEBSITE_SITE_NAME": "CreateProfile",
"WEBSITE_SLOT_NAME": "Production",
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=createprofil8796;AccountKey=something"
},
"configurationSource": "config",
"bindings": [
{
"type": "serviceBusTrigger",
"connection": "sb://myservicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=something",
"queueName": "testqueue",
"accessRights": "manage",
"name": "myQueueItem",
"direction": "in"
}
]
}
这是我的错误页面
这种
Azure Function
的正确实现是什么? GitHub 上有没有例子?提前致谢。 最佳答案
您混淆了 Azure 服务总线和 Azure 存储队列。 Queue Trigger
用于存储队列,因此 Connection
是存储帐户的连接字符串,Path
用于队列路径。
要使用服务总线,您应该使用 Service Bus Trigger
。在 .NET Core/v2 版本的函数上设置它需要更多的努力,因为 Visual Studio 工具尚不可用。
我建议暂时将 Functions v1 用于服务总线。ServiceBusTrigger
是要使用的正确类型。您应该将其 Connection
属性设置为包含服务总线连接字符串的设置名称,而不是连接字符串本身。因此
ServiceBusTrigger
放在您的函数定义中。 MyServiceBusConnection
(或您喜欢的任何其他名称)的设置。将其设置为 sb://myservicebus.servicebus.windows.net/;...
[ServiceBusTrigger("myqueue", AccessRights.Manage, Connection = "MyServiceBusConnection")]
关于c# - Azure 服务总线和 Azure 函数队列触发器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49235941/