C# 如何使用WebJob处理Azure队列上的大量邮件?

C# 如何使用WebJob处理Azure队列上的大量邮件?,c#,azure,azure-webjobs,azure-queues,C#,Azure,Azure Webjobs,Azure Queues,我有一个非常简单的队列,上面碰巧有大量的消息(根据设计)。堆==。。说。。。几千 现在,我正在尝试使用带有队列触发器的Azure Web作业来处理消息。很好 不过我还是担心性能。假设我处理消息的方法需要1秒。有这么多的信息,这些都加起来了 我知道我可以同时手动弹出多条消息,然后并行处理它们。。但我不确定我们如何处理网络作业 我假设解决方案是向外扩展??这意味着我将创建25个webjob实例?或者有没有更好的方法,我可以触发一条消息,但同时弹出25条左右的消息,然后自己将它们并行 注意:大部分延迟

我有一个非常简单的队列,上面碰巧有大量的消息(根据设计)。堆==。。说。。。几千

现在,我正在尝试使用带有队列触发器的Azure Web作业来处理消息。很好

不过我还是担心性能。假设我处理消息的方法需要1秒。有这么多的信息,这些都加起来了

我知道我可以同时手动弹出多条消息,然后并行处理它们。。但我不确定我们如何处理网络作业

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

注意:大部分延迟是I/O(即对第三方的REST呼叫)。不是CPU

我在想->创建25个任务和
等待任务
处理我返回的所有数据

那么,请问我有什么选择


注#2:如果解决方案是横向扩展的。。然后我还需要确保我的web工作项目中只有一个功能,对吗?否则,所有功能(读取:触发器等)也将全部向外扩展。

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

此外,您可以扩展托管WebJob的Azure应用程序服务/网站,最多可扩展20个实例。但是,向外扩展实例(与上面的并行出列不同)会对定价产生影响,所以请检查一下


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

如果您正在探索,我认为这是azure函数的一个很好的候选者,您可能可以将代码解耦并使触发器在逻辑上发生。否则,azure webjobs应该可以正常工作。我只是在寻找函数的工具。。非常有限。我基本上不想在Web UI中进行任何编码(对不起,摩纳哥),因为我希望代码链接到CI/CD。这就是我目前的挫败感:/我觉得你,这项技术看起来很有希望,但开发经验仍然有点痛苦。如果有帮助的话,我们已经使用webjobs为迁移过程处理了90多万条消息。结果相当不错(10个实例)