azure - 使用 Azure 服务总线通过 Azure Functions 处理大量投票并处理结果

标签 azure azure-functions distributed-computing servicebus azure-servicebus-queues

我正在创建一个民意调查应用程序。用户可以定义一个或多个投票问题并配置答案选项。 guest 可以加入 session ,当投票(问题)被激活时,开始投票。基本上标准民意调查是什么样子的。

为了处理传入的投票,我使用 Azure 服务总线。我有一个接受投票并向服务总线队列发送消息的端点。然后,具有服务总线队列触发器的 Azure 函数将使用该消息并将投票保留在存储库中的某个位置。

我的问题是我想要另一个“后台进程”,我想象另一个Azure函数,当投票进来时会触发它,去计算投票的累积,以便能够绘制饼图。

现在我希望尽可能有效地触发此函数。关键是它必须准确。我正在寻找的是一种在投票进来时触发计算一次的方法,但是当一堆投票进来时,我只想在最后一次投票保留后触发计算一次。我正在考虑引入一个新的队列来发送“计算命令”。我使用实时框架来更新饼图。我想经常发送饼图更新,但当短时间内出现大量选票时,不一定每秒发送数千次。

我正在寻找一种可以使用 SB 队列重复数据删除的解决方案,但我认为这种重复数据删除还会检查以前发送的消息。并且使用此解决方案并不能保证在处理完最后一次投票后进行计算,因为该消息可能会被识别为重复消息,从而被忽略。

另一个解决方案可能是为投票队列引入一个 SessionId,让我能够克服同时处理投票消息的问题,但这感觉像是使用服务总线的反模式。最后,当大量选票进来时,你希望事情像疯子一样扩展,所以出于这个原因,这次 session 对我来说是不可行的。

现在我已经没有想法了,是否有一种我忽略的机制,我可以利用它(例如)仅在没有类似消息等待处理时才将消息放入队列中(例如没有锁)或者什么?

最佳答案

您可以使用可用的 Event Grid events 之一来触发该功能对于服务总线,如果您担心您不希望监听器始终运行。

关于azure - 使用 Azure 服务总线通过 Azure Functions 处理大量投票并处理结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74121386/

相关文章:

Azure Functions Core Tools 无法安装绑定(bind)所需的扩展

c# - 运行多个实例的 Azure Function EventHubTrigger

concurrency - Azure Functions 并发和缩放行为

java - JMeter主从

azure - 获取将数据发送到特定日志分析工作区的所有资源?

azure - 如何在azure搜索中过滤空字符串

java - Azure REST API 使用 java 获取存储 Blob 大小详细信息

azure - Azure Function App 是否可以通过 VPN 或混合连接访问本地资源?

p2p - 学习分布式系统中更新通信算法的最佳论文是什么?

java - 警告 "unknown addresses are found in partition table"