azure函数侦听任何服务总线主题/订阅

azure函数侦听任何服务总线主题/订阅,azure,azure-functions,azureservicebus,Azure,Azure Functions,Azureservicebus,使用该模板创建azure函数,您可以创建只侦听特定azure主题/订阅对的函数: { "bindings": [ { "name": "mySbMsg", "type": "serviceBusTrigger", "direction": "in", "topicName": "ftopic1", "subscriptionName": "mysub", "connection": "collosysazfunc

使用该模板创建azure函数,您可以创建只侦听特定azure主题/订阅对的函数:

{
  "bindings": [
    {
      "name": "mySbMsg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "topicName": "ftopic1",
      "subscriptionName": "mysub",
      "connection": "collosysazfuncsb_RootManageSharedAccessKey_SERVICEBUS",
      "accessRights": "Manage"
    }
  ],
  "disabled": false
}
然后在run.csx中,您只会收到消息

public static void Run(string message, TraceWriter log)
{
    log.Info($"message: {message}");
}
是否有一种方法可以使用azure函数侦听任何主题/订阅,然后在
Run
方法中接收topicName和subscriptionName作为参数


将主题名称设置为*没有帮助,而且在
Run

Azure函数中也没有提供主题名称,只允许侦听单个队列或订阅。它不允许侦听多个实体(队列或订阅),因为Azure Service Bus客户端不支持此功能。相反,您可以利用Azure服务总线的优势。代理将把任何消息转发到目标主题/队列,您将有一个单一的队列供Azure函数使用

需要注意的是,自动转发的消息不会携带任何信息,这些信息将允许识别它们来自哪个队列/订阅。这只有在有条件的情况下才可能实现

由于您对主题感兴趣,您可以通过对订阅规则进行操作来“解决”此问题,该操作将使用自定义属性标记消息。例如,有3个主题,每个主题都有默认订阅,还有一个带有规则操作的默认筛选器

set[x-source]=“topic-N”


其中,
N
是主题标识符,将导致所有自动转发的消息包含
x-source
自定义属性,其值对应于它们起源的主题。

Azure服务总线(ASB)不允许订阅者一次订阅多个主题。换句话说,ASB没有基于主题的通配符,例如IBM WebSphere MQ。然而,ASB有一个称为自动转发的功能,即消息可以在同一名称空间内根据过滤器从任何主题转发到任何主题,等等。很好,感谢解决方法:),逻辑应用程序是否也有相同的行为方式,我的意思是,逻辑应用程序仅在特定订阅上触发??相信是这样的。这是你必须和之交谈的同一个经纪人。