限制发送到触发服务总线队列的 Azure 函数的 blob 存储事件

问题描述 投票:0回答:1

这是我的架构:

  • 我有一个 blob 存储,当在容器中创建 blob 时,该事件会触发 azure 函数。

  • azure 函数读取文件 (xml) 并根据文件中的 xml 标记向服务总线队列发送消息。这意味着我的服务总线中有多个队列。

  • 多线程运行的应用程序然后从队列中提取消息并根据消息执行操作。

我的问题是,当大量文件上传到 blob(~25 000)时,天蓝色函数打开大量连接(ServiceBusClient)以将消息发送到服务总线队列,这导致服务总线客户端抛出一个错误,因为我达到了连接的限制(最大5000)。这意味着我的 azure 函数有超过 5000 个与服务总线并行的连接。

有没有办法将 azure 函数限制为 2000 个实例或减慢事件发送到 azure 函数的速度?

如果它在 azure 函数和 ServiceBusClient 中失败,我已经尝试制定重试策略,但我真的很想避免这种情况。

谢谢!

azure azure-functions azure-blob-storage azureservicebus
1个回答
0
投票

有几个选项需要考虑

1。使用静态客户端 这可能是最简单的方法,因为我们的想法是只使用一个服务总线客户端来确保使用相同的连接,而不是为函数应用程序的每次调用创建一个新的客户端。

2。将事件转发到服务总线并设置并发 您可以将事件传递到服务总线队列并从那里触发一个函数,而不是直接将事件传递给您的函数应用程序。

这使您可以设置 并发控制 以限制一次处理的消息数。

© www.soinside.com 2019 - 2024. All rights reserved.