使用模板创建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函数收听任何主题/订阅,然后接收topicName& subscriptionName作为Run
方法中的参数。
将topic-name作为*没有用,而且它也没有在Run
中提供topic-name。
答案 0 :(得分:3)
Azure Functions仅允许侦听单个队列或订阅。它不允许侦听多个实体(队列或订阅),因为Azure Service Bus客户端不支持此操作。相反,正如was pointed out一样,您可以利用{3}} Azure Service Bus。代理会将任何消息转发到目标主题/队列,并且您将拥有一个用于Azure功能的单个队列。
重要的是要注意,自动转发的消息不会携带任何可以识别它们来自哪个队列/订阅的信息。这仅适用于Auto Forwarding feature。
由于您对主题感兴趣,因此您可以通过对订阅规则执行操作来解决此问题,该规则将使用自定义属性标记邮件。例如,有3个主题,每个主题都有默认订阅,默认过滤器有规则操作
set [x-source] = 'topic-N'
其中N
是主题标识符,会导致所有自动转发的邮件包含x-source
自定义属性,其值与其源自的主题相对应。