如何在 Azure 函数中使用带有 topic/subscription 的 ServiceBus 触发器

How to use a ServiceBus Trigger with a topic/subscription in an Azure Function

我想创建一个 Azure 函数,当新消息添加到 topic/subscription 时会触发该函数。

目前,我使用 ServiceBusQueueTrigger C# 模板 创建了一个 Azure Function,并将队列名称设置为

topicPath + "/Subscriptions/" + subscriptionName

但是我有这个例外:

Microsoft.ServiceBus: Cannot get entity 'topic-test/Subscriptions/subscription-test' because it is not of type QueueDescription. Check that you are using method(s) with the correct entity type. System.Runtime.Serialization: Error in line 1 position 1762. Expecting element 'QueueDescription' from namespace 'http://schemas.microsoft.com/netservices/2010/10/servicebus/connect'.. Encountered 'None' with name '', namespace ''. .

我以为 Azure 函数正在使用 MessagingFactory.CreateMessageReceiver 来初始化消息泵,但不是。

目前 topic/subscription 有任何支持吗?

是的,支持主题,但不幸的是,我们的 UI 和模板落后于此 - 我们将很快发布一些更新来解决这些问题。

目前,您可以使用高级编辑器直接编辑您的触发器绑定。您可以在此处指定 subscriptionNametopicName 值。这是一个例子:

{
  "bindings": [
    {
      "type": "serviceBusTrigger",
      "name": "message",
      "direction": "in",
      "subscriptionName": "subscription-test",
      "topicName": "topic-test",
    }
  ]
}

一般来说,由于 Azure Functions 构建在 WebJobs SDK 之上,我们的各种绑定直接映射到对应的 SDK。例如 serviceBusTrigger 映射到具有 SubscriptionName/TopicName 属性的 ServiceBusTriggerAttribute。因此,期望在函数元数据模型中看到相同的属性。