gpt4 book ai didi

.net - 处理来自 Azure 服务总线的大量消息的最佳方法

转载 作者:行者123 更新时间:2023-12-03 06:06:23 27 4
gpt4 key购买 nike

我有一个场景,需要处理来自 Azure 服务总线队列/主题的大量消息。我将从移动设备收集报告数据并将其存储在数据库中。

对于收集过程,我可以提供 REST API,或者移动设备可以使用 AMQP 协议(protocol)直接与 Azure 服务总线交互。这种方法提供了更快的速度并减少了往返开销。

我的目标是为每个租户创建一个单独的队列/主题,每个队列/主题包含不同类型的报告数据。我更喜欢使用主题,因为我可以创建多个订阅并为每种报告类型应用过滤器。

但是,挑战在于如何有效处理来自所有这些主题的消息。我考虑了两个主要选项:Azure Functions 或 .NET 中的后台服务,它们将部署到虚拟机 (VM)。我的目标是批量处理消息,比如一次处理100条消息,防止数据库不堪重负。

以下是我正在考虑的选项:

在 .NET 中创建一个后台服务,该服务每 10-15 分钟运行一次,以从服务总线命名空间获取所有主题并进行处理。但是,我担心并行处理,因为我想在并行处理所有主题订阅时避免线程匮乏。此外,数据库锁定可能是一个问题,会影响处理速度。

为循环中的每个主题创建消息处理器,并为新添加的主题动态添加处理器。我担心这种方法可能会遇到同样的处理挑战,并可能导致高资源消耗。

使用带有时间触发器的 Azure Functions,它执行与选项 1 类似的任务。我已经有一个用于运行后台服务的专用 VM,因此如果它被证明是最佳解决方案,我会考虑它,即使它引入了一些额外费用。

在同一函数应用程序中为每个主题动态创建函数。不过我认为这是不可能的。

我正在寻求有关最佳方法的建议,或者是否有其他选择。我主要关心的是确保快速有效地处理消息。

最佳答案

您可以在需要时利用 IaC 为每个租户创建一个主题。也使用相同的方法为每个租户创建一个 Azure Function App。每当您加入新租户时,请运行代码来创建所需的服务。

我将使用 Azure Functions 使消息出队并处理。您所要做的就是正确设置最大并发调用/ session :https://learn.microsoft.com/en-us/azure/azure-functions/functions-concurrency#static-concurrency

关于数据库,如果目标是支持数百万台设备,我会为此使用 noSQL,并且可能仅出于报告目的而将结果聚合到关系数据库中。

关于.net - 处理来自 Azure 服务总线的大量消息的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77273276/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com