如何在Azure函数中使用ServiceBus触发器与主题/订阅

时间:2016-04-19 02:30:46

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

我想创建一个Azure主题,在将新消息添加到主题/订阅时触发该功能。

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

topicPath + "/Subscriptions/" + subscriptionName

Azure Functions ServiceBusQueueTrigger C# Template

但是我有这个例外:

  

Microsoft.ServiceBus:无法获取实体' topic-test / Subscriptions / subscription-test'因为它不是 QueueDescription 类型。检查您使用的是具有正确实体类型的方法。 System.Runtime.Serialization:第1行位置错误1762.期待元素' QueueDescription'来自命名空间' http://schemas.microsoft.com/netservices/2010/10/servicebus/connect' ..遇到'无'名称'',名称空间''。

Failed to create ServiceBusTrigger with Topic/Subscription in an Azure Function

我认为Azure功能正在使用MessagingFactory.CreateMessageReceiver初始化消息泵而不是。

目前是否有对主题/订阅的支持?

1 个答案:

答案 0 :(得分:5)

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

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

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

通常,由于Azure Functions是在WebJobs SDK上构建的,因此我们的各种绑定将直接映射到它们的SDK对应物。例如,serviceBusTrigger映射到具有SubscriptionName / TopicName属性的ServiceBusTriggerAttribute。因此,期望在Function元数据模型中看到相同的属性。