在监控多个队列时,Azure WebJobs如何确定消息的优先级?

时间:2016-02-09 10:01:45

标签: azure message-queue azure-webjobs

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

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

另一种方法是在同一个WebJob项目中混合快速和慢速处理程序。我对此的关注是更快的处理程序使较慢的注意力挨饿,反之亦然。

第三种方法是为每个单独的消息处理程序提供单独的WebJob,但考虑到我们必须处理的消息类型的数量,我宁愿不去那条路线。说实话,这似乎有些过分。

我想知道是否有人遇到类似的情况,并且可以提供任何洞察Azure WebJobs如何选择在监控多个队列时要处理哪些消息?许多互联网搜索未能在这方面提供任何指导或帮助。要明确的是,我并不是真正意见到人们认为最适合哪种方式;我正在寻找那些实际处理过这类问题的人的答案,并且可以肯定地说,哪种不同的方法最适合Azure WebJobs API目前优先处理队列消息处理的方式。

1 个答案:

答案 0 :(得分:1)

如果您有多个功能侦听不同的队列,SDK会在同时收到消息时并行调用它们。您无法设置应首先处理哪个队列。

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