【问题标题】:Using multiple Azure Functions QueueTriggers to listen on the same storage queue使用多个 Azure Functions QueueTriggers 侦听同一个存储队列
【发布时间】:2021-02-18 19:07:29
【问题描述】:

我有一个 Azure Functions QueueTrigger,它在存储队列上侦听如下消息:

Message text
--------------------------
{"ClientName": "client1"}
{"ClientName": "client2"}
{"ClientName": "client3"}

QueueTrigger 的代码如下:

if 'client1' == queue_msg['ClientName']:
    # do work required for client1
elif 'client2' == queue_msg['ClientName']:
    # do work required for client2
elif 'client3' == queue_msg['ClientName']:
    # do work required for client3

我正在使用带有batchSize1 的Linux 消耗计划,因为队列触发器的每次调用可能需要大约5 分钟,并且我想确保我不会超出内存限制。这个解决方案现在对我来说效果很好,但我担心当客户端数量增加时,消息将开始在队列中累积。是否可以只创建一个也在同一个存储队列上侦听的新 Azure 函数?我认为这没关系,因为每个消息/客户端都有独立于它们的工作,因此如果 Azure Function 应用程序中的任何一个首先接收到消息都没有关系。这对我来说似乎是最具成本效益的解决方案,但我想知道是否有更好的替代方案或任何我没有想到的负面结果。

【问题讨论】:

    标签: azure-functions azure-storage azure-webjobs azure-storage-queues azure-triggers


    【解决方案1】:

    根据你的问题描述,你不需要关心消息积累。而且您不需要创建另一个函数来侦听同一个存储队列。如果您将 consumption plan 用于您的 azure 函数,它将扩展更多实例来处理消息。你可以参考这个文档。

    ================================更新======== =========================

    根据您的要求,每个实例运行最多可能使用 1 GB 内存,建议您使用“Premium plan”作为您的函数。

    当您使用高级计划创建功能应用程序时,您可以选择“EP1”,如下图所示。 “EP1”方案最大内存3.5GB,功能运行时可横向扩展至3个实例。

    函数应用创建完成后,进入函数应用,点击“Scale out(App Service Plan)”,然后将“Maximum Burst”设置为3 .这意味着该计划将最多扩展到 3 个实例。

    如果您希望同时运行更多实例,您还可以为您的函数应用选择“EP2”或“EP3”高级计划并更改“最大突发”。

    【讨论】:

    • 我不想横向扩展的原因是因为应用程序可能需要大约 5 分钟,并且最多可以使用大约 1 GB 的内存。如果我有多个实例同时运行,我会失败,因为我会超过消耗计划的 1.5GB 内存限制。我将batchSize 设置为1,将functionAppScaleLimit 设置为1,因为我不希望应用程序向外扩展。这就是为什么我在考虑创建另一个 Azure 函数来帮助处理消息。
    • 嗨@JohnT 抱歉,我不知道您的函数的每个实例最多可以使用 1 GB 内存。但是我有点怀疑你的功能失败是由多个实例在消费中引起的。因为document 向我们展示了每个实例的最大内存 1.5GB(不是所有实例的 1.5GB)。
    • @JohnT 抱歉,我查看了文档,似乎所有内存都是 1.5 GB。我稍后会修改我的解决方案。
    • @ddx 我认为我们不需要将batchSize 从更改为3。您可以参考这个document中的expression
    • 嗨@ddx 我会做一些测试并在你的新帖子下提供答案。
    猜你喜欢
    • 2018-04-08
    • 1970-01-01
    • 2013-09-24
    • 2011-08-18
    • 2017-05-08
    • 2016-12-31
    • 2017-10-06
    • 2021-10-09
    • 2017-10-29
    相关资源
    最近更新 更多