有没有办法让多个Service Bus事件队列可以触发Azure功能?例如,如果存在一个逻辑对多个案例有效的函数(事件开始,事件结束 - 每个插入到不同的服务总线队列中)并且我想为这些事件重用它,我可以在服务中订阅它们吗?总线来自同一个功能?
我一直在寻找这个问题的答案,但到目前为止,我检查它似乎是不可能的。
答案 0 :(得分:1)
Azure功能可以由单个源队列或订阅触发。 如果您想整合多个源作为单个函数的触发器,您可以将消息转发到单个实体(让我们假设一个队列)并将Function配置为由该队列中的消息触发。 Azure Service Bus本身支持Auto-Forwarding。
请注意,不能超过3个跃点,如果从队列转发消息,您无法知道源是什么。对于订阅,可以采用标记消息的方法。
答案 1 :(得分:0)
您可能需要考虑通过仅使用一个队列来切换模式,但为客户端使用多个主题/订阅。
然后,有问题的函数可以由Start-End Topic触发。
其他一些功能可以由工作主题等触发
答案 2 :(得分:0)
如果您的目标是简单地重用代码,那么重构该Function以创建一个然后在多个函数中使用的类。
如果您的目标是实现事件聚合,那么您可以创建一个Azure Durable Function Workflow,它可以对多个事件进行扇入。
摘录自https://github.com/Azure/azure-functions-durable-extension/issues/166:
按小时批量处理Azure blob。
使用事件网格触发器将新的blob通知发送到触发器函数。
事件网格触发器使用单例模式创建一个众所周知名称的单个业务流程实例,并将事件引发到包含blob有效负载的实例。
为了防止实例创建中的竞争条件,使用SingletonAttribute将事件网格触发器配置为单例。
Blob有效负载聚合到List中并发送到另一个函数进行处理 - 在这种情况下,聚合为单个每批输出blob。
耐用计时器用于确定一小时的时间边界。