Azure WebJobs 在监控多个队列时如何对消息进行优先级排序?

Posted

技术标签:

【中文标题】Azure WebJobs 在监控多个队列时如何对消息进行优先级排序?【英文标题】:How do Azure WebJobs prioritize messages when monitoring multiple queues? 【发布时间】:2016-05-19 06:12:24 【问题描述】:

我正在使用 Azure WebJobs 作为工作项目的一部分。这些被配置为监控多个不同队列的连续运行的作业。当接收到队列消息时,它们会导致运行各种 API 命令。我遇到的问题是一些 API 命令运行速度很快(即几秒钟),而另一些运行速度很慢(几分钟),我不确定如何最好地在 WebJobs 之间拆分队列处理程序。

例如,我可以将所有慢速 API 命令处理程序放在一个 WebJob 中,将所有快速处理程序放在另一个 WebJob 中。我担心的是“慢速”WebJob 进程总是很忙,而“快速”WebJob 进程大部分时间都处于空闲状态。

另一种方法是在同一个 WebJob 项目中混合使用快速和慢速处理程序。我担心的是,较快的处理程序会饿死较慢的注意力,反之亦然。

第三种方法是为每个单独的消息处理程序设置一个单独的 WebJob,但考虑到我们必须处理的消息类型的数量,我宁愿不走这条路。老实说,这似乎也有点矫枉过正。

我想知道是否有人遇到过类似的情况,并且可以提供有关 Azure WebJobs 在监视多个队列时如何选择要处理的消息的任何见解?许多互联网搜索未能找到该领域的任何指导或帮助。需要明确的是,对于人们认为最好的方法,我并不是很喜欢。我正在寻找那些实际处理过此类问题的人的答案,并且可以在一定程度上确定考虑到 Azure WebJobs API 当前优先处理队列消息处理的方式,哪种不同的方法最好。

【问题讨论】:

【参考方案1】:

如果您有多个函数监听不同的队列,SDK 会在同时接收消息时并行调用它们。不能设置先处理哪个队列。

根据您的配置,您将并行处理它们。如果您认为某些执行会拖延其他执行,您可以将处理拆分为多个 webjobs 并单独扩展它们。

【讨论】:

以上是关于Azure WebJobs 在监控多个队列时如何对消息进行优先级排序?的主要内容,如果未能解决你的问题,请参考以下文章

在 azure 上发布网站时,webjobs 被删除

如何扩展 Azure Webjobs

在 Azure Webjobs SDK 中设置 nextVisibleTime

WebJobs 未重试失败的队列消息

如何在本地测试 Azure Webjobs SDK 项目?

python中的Azure WebJobs [关闭]