我可以运行多个Azure函数实例来监听同一队列吗

时间:2019-03-06 13:52:55

标签: azure azure-functions

背景: 最近,我遇到了一个问题,我的函数无法处理负载,并且队列消息正在建立。从长远来看,我正在寻找找到瓶颈的代码,但从短期来看,我需要解决这个问题。
问题: 是否可以添加相同的Azure函数的多个实例(即使它是重命名为myjobrunner1,myjobrunner2的实例),也可以全部监听同一队列?这对我的情况有帮助吗?

一些警告:
付费计划看起来不错,但目前无法在制作中测试预览。
添加专用的AppService是一个选项,但这是一个较长期的解决方案。我现在麻烦了。
正在进行代码修复以更好地处理负载并提高性能,但是外部服务阻碍了它们的事实是一个因素。

1 个答案:

答案 0 :(得分:0)

我如何解决这个问题。
我添加了一个额外的队列和逻辑,以在两个队列之间拆分消息。然后,我创建了一个指向第二个队列的新函数实例(1和2)。我最初以为,通过只允许提取消息的一个副本来使队列起作用。然后,其他任何服务都无法读取该消息。我的测试似乎并非如此。

运行两个函数,每个函数具有最大批处理计数,可以解决此问题。在我们可以有效地查看更多代码增强功能之前,我可以继续使用这种模式。但是我们的瓶颈似乎是httpclient实例(我不能以静态方式运行它们,并且需要进行重大更改)以及一些可以优化的数据库调用。

如果其他人有其他建议,请添加它。 当高级计划发布时,我会尝试这样做,但在那之前,我将不得不坚持使用此解决方案。