gpt4 book ai didi

c# - 如何使用 WebJob 处理 Azure 队列上的大量消息?

转载 作者:太空宇宙 更新时间:2023-11-03 23:11:49 25 4
gpt4 key购买 nike

我有一个非常简单的队列,上面恰好有大量消息(按设计)。堆 == .. 比如说 ... 数千。

现在我正在尝试使用 Azure Web 作业和队列触发器来处理消息。工作正常。

不过我担心性能。假设我处理消息的方法需要 1 秒。有这么多消息,这一切加起来。

我知道我可以同时手动弹出多条消息,然后并行处理它们..但我不确定我们如何通过网络作业来做到这一点?

假设解决方案是向外扩展?这意味着我将创建 25 个 webjob 实例?或者是否有更好的方法,我可以触发一条消息,但一次弹出 25 条左右的消息,然后自己并行它们。

注意:大部分延迟是 I/O(即对第 3 方的 REST 调用)。不是CPU。

我在想 -> 创建 25 个任务并 await Task.WhenAll(tasks); 来处理我返回的所有数据。

那么 - 请问我有什么选择?

注意#2:如果解决方案是横向扩展的..那么我还需要确保我的网络作业项目中只有一个功能,对吗?否则所有功能(例如:触发器等)也将所有被横向扩展。

最佳答案

Azure WebJobs 的默认配置是并行处理 16 条消息,这个数字是 configurable 。 WebJobs 框架在内部创建 16 个(或配置的 MaxDequeueCount )函数副本并并行运行它们。

此外,您还可以launch multiple instances,即,托管 WebJob 的 Azure 应用服务/网站的横向扩展,最多可达 20 个实例。但是,扩展实例(与上面的并行出队不同)会对定价产生影响,因此请检查这一点。

因此,理论上您可以通过在标准 WebJob 函数上单独配置来并行处理 24*20 = 480 条消息,而无需任何自定义代码。

关于c# - 如何使用 WebJob 处理 Azure 队列上的大量消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38938417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com