使用多个 Azure Functions QueueTriggers 监听同一个存储队列
Using multiple Azure Functions QueueTriggers to listen on the same storage queue
我有一个 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
我正在使用 Linux 消费计划,batchSize
为 1
,因为队列触发器的每次调用可能需要大约 5 分钟,我想确保我没有' 超出内存限制。这个解决方案现在对我来说效果很好,但我担心当客户端数量增加时,消息将开始在队列中累积。是否可以只创建一个新的 Azure Functions 也侦听相同的存储队列?我认为这没问题,因为每个 message/client 都有独立于它们的工作,所以如果 Azure Function 应用程序中的任何一个先接收到一条消息都没有关系。这对我来说似乎是最具成本效益的解决方案,但我想知道是否有更好的替代方案或我没有想到的任何负面结果。
根据您的问题描述,您无需担心留言堆积。而且您不需要创建另一个函数来侦听同一个存储队列。如果您将 consumption plan 用于您的 azure 函数,它将扩展更多实例来处理消息。你可以参考这篇文档。
===============================更新=== =============================
根据您对每个实例的要求,运行ning可能会使用最多1GB的内存,我建议您使用“Premium plan”来实现您的功能。
当您使用高级计划创建函数应用程序时,您可以选择“EP1”,如下图所示。 “EP1”计划有最大 3.5GB 内存,因此当函数 运行ning 时它可以扩展到 3 个实例。
函数应用创建完成后,进入函数应用点击“Scale out(App Service Plan)”,然后设置“Maximum Burst" 为 3
。这意味着该计划将最多扩展到 3 个实例。
如果您希望更多实例同时运行,您还可以选择“EP2”或“EP3” " 为您的函数应用制定高级计划并更改“Maximum Burst”的值。
我有一个 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
我正在使用 Linux 消费计划,batchSize
为 1
,因为队列触发器的每次调用可能需要大约 5 分钟,我想确保我没有' 超出内存限制。这个解决方案现在对我来说效果很好,但我担心当客户端数量增加时,消息将开始在队列中累积。是否可以只创建一个新的 Azure Functions 也侦听相同的存储队列?我认为这没问题,因为每个 message/client 都有独立于它们的工作,所以如果 Azure Function 应用程序中的任何一个先接收到一条消息都没有关系。这对我来说似乎是最具成本效益的解决方案,但我想知道是否有更好的替代方案或我没有想到的任何负面结果。
根据您的问题描述,您无需担心留言堆积。而且您不需要创建另一个函数来侦听同一个存储队列。如果您将 consumption plan 用于您的 azure 函数,它将扩展更多实例来处理消息。你可以参考这篇文档。
===============================更新=== =============================
根据您对每个实例的要求,运行ning可能会使用最多1GB的内存,我建议您使用“Premium plan”来实现您的功能。
当您使用高级计划创建函数应用程序时,您可以选择“EP1”,如下图所示。 “EP1”计划有最大 3.5GB 内存,因此当函数 运行ning 时它可以扩展到 3 个实例。
函数应用创建完成后,进入函数应用点击“Scale out(App Service Plan)”,然后设置“Maximum Burst" 为 3
。这意味着该计划将最多扩展到 3 个实例。
如果您希望更多实例同时运行,您还可以选择“EP2”或“EP3” " 为您的函数应用制定高级计划并更改“Maximum Burst”的值。