Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure函数绑定多个服务总线事件_Azure_Azure Functions_Azureservicebus_Azure Servicebus Queues - Fatal编程技术网

Azure函数绑定多个服务总线事件

Azure函数绑定多个服务总线事件,azure,azure-functions,azureservicebus,azure-servicebus-queues,Azure,Azure Functions,Azureservicebus,Azure Servicebus Queues,有没有办法让Azure函数可以由多个服务总线事件队列触发?例如,如果有一个函数,其逻辑对多种情况(事件开始、事件结束-每种情况都插入到不同的服务总线队列)有效,并且我希望将其用于这些事件,那么我可以从同一个函数在服务总线中订阅这两种情况吗 我一直在寻找这个问题的答案,但到目前为止,我检查的所有地方似乎都不可能找到答案 Azure函数可以由单个源队列或订阅触发。 如果您希望合并多个源以用作单个函数的触发器,则可以将消息转发到单个实体(假设为队列),并将该函数配置为由该队列中的消息触发。Azure服

有没有办法让Azure函数可以由多个服务总线事件队列触发?例如,如果有一个函数,其逻辑对多种情况(事件开始、事件结束-每种情况都插入到不同的服务总线队列)有效,并且我希望将其用于这些事件,那么我可以从同一个函数在服务总线中订阅这两种情况吗


我一直在寻找这个问题的答案,但到目前为止,我检查的所有地方似乎都不可能找到答案

Azure函数可以由单个源队列或订阅触发。 如果您希望合并多个源以用作单个函数的触发器,则可以将消息转发到单个实体(假设为队列),并将该函数配置为由该队列中的消息触发。Azure服务总线本机支持


请注意,跳数不能超过3,如果消息是从队列转发的,则不一定知道消息的来源。对于订阅,有一种可能的方法来对消息进行标记。

您可能想考虑只使用一个队列,但对客户端有多个主题/订阅来切换模式。 然后,开始-结束主题可以触发所讨论的函数


工作主题可以触发其他一些函数,等等。

如果您的目标是简单地重用代码,那么重构该函数以创建一个类,然后在多个函数中使用该类如何

如果您的目标是实现事件聚合,那么您可能会创建一个Azure持久功能工作流,该工作流将对多个事件进行扇入

摘自:

每小时批量处理Azure Blob

  • 使用事件网格触发器将新blob通知发送到触发器函数

  • 事件网格触发器使用singleton模式创建一个已知名称的业务流程实例,并向包含blob负载的实例引发事件

  • 为了防止实例创建中出现争用情况,使用SingletonAttribute将事件网格触发器配置为singleton

  • Blob有效负载聚合到一个列表中,并发送到另一个函数进行处理——在本例中,聚合到单个每批输出Blob中

  • 持久计时器用于确定一小时的时间界限


  • 我发现在azure function.json文件中指定触发器时,需要添加订阅名称和主题名称。这意味着我只能将触发器绑定到一个主题,而不是多个主题。你有什么参考资料吗?另外,基于主题似乎是一对多的:我们可以为一个主题提供多个客户端。但这不是我想要达到的。在我的示例中,我想要的关系是多对一。@yanis好的,不,我要说的是使用一个队列而不是多个队列,然后为每个函数配置一个主题。因此,与其尝试从不同队列中获取触发函数,不如使用该主题在单个队列中路由所有相关消息。您是否介意详细说明“对于订阅,有一种可能的方法可以标记消息?”@John subscriptions有规则。每个规则都有一个筛选器和一个操作。操作可用于“标记”消息头。也就是说,您可以添加接收方可以利用的其他元数据。例如,如果您有订阅,并且希望使用单个函数以不同的方式处理这两个订阅,则每个订阅都可以有一个带有操作的规则,并将“stamp”/write一个带有订阅名称的自定义头。当函数接收到消息时,代码将能够识别消息来自何处。希望有帮助:)