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

Azure function binding multiple Service Bus events

有没有办法让一个 Azure 函数可以被多个服务总线事件队列触发?例如,如果有一个逻辑对多种情况有效的功能(事件开始、事件结束——每个都插入到不同的服务总线队列中),我想为这些事件重用它,我可以在服务中订阅它们吗来自相同功能的总线?

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

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

请注意,跃点不能超过 3 个,如果消息是从队列转发的,您不一定知道来源是什么。对于订阅,有一个可能的解决方法来标记消息。

您可能需要考虑通过仅使用一个队列但为客户端使用多个 Topics/Subscriptions 来切换模式。

然后问题中的函数可以被Start-End主题触发。

一些其他功能可以通过工作主题等触发

如果您的目标只是简单地重用代码,重构该函数以创建一个 class 然后在多个函数中使用怎么样。

如果您的目标是实施事件聚合,您可能会创建一个 Azure 持久函数工作流,它会对多个事件执行 fan-in。

摘自https://github.com/Azure/azure-functions-durable-extension/issues/166

每小时批量处理 Azure blob。

  1. 使用事件网格触发器将新的 blob 通知发送到触发器函数。

  2. 事件网格触发器使用单例模式创建 well-known 名称的单个编排实例,并向包含 blob 负载的实例引发事件。

  3. 为了防止在创建实例时出现竞争条件,事件网格触发器使用 SingletonAttribute 配置为单例。

  4. Blob 负载被聚合到一个列表中并发送到另一个函数进行处理 - 在这种情况下,聚合到单个 per-batch 输出 blob 中。

  5. 持久计时器用于确定 one-hour 时间边界。