【发布时间】:2018-03-06 20:49:27
【问题描述】:
我有一个函数 doWork(id),我正在使用 AWS SQS 将其卸载到一些工作服务器。此函数可能会被非常频繁地调用,但我想限制该函数,以便对于给定的 id,工作不超过每秒一次。
AWS 是否有可能/是否有任何具有此功能的服务?
编辑:一些澄清。
doWork(id) 在数据库中的记录上做了一些昂贵的工作。每当用户与记录交互时,这项工作需要不断更新。因此,每当用户调用编辑记录的方法时,我都会调用doWork(id)。但是,用户可能会非常快速地多次编辑记录(我正在构建一个文本编辑器,因此每个字符都是一个编辑)。而不是doWork(id) 不必要的次数,我想限制这项工作,使其每秒最多发生一次。
因为这项工作很昂贵,所以我在 SQS 中将消息排入队列,并有一组“工作”服务器将任务出列并运行它们。
我的目标是在限制doWork(id) 的同时以某种方式保持服务器的无状态水平可扩展性。让事情变得更复杂一些,我不想限制 doWork 函数本身——我想限制传递给 doWork 的 id 标识的每个单独记录的工作。
【问题讨论】:
-
很遗憾,您的解释不是很清楚。您能否编辑您的问题以澄清 DoWork、SQS 和您的员工之间的关系?无论如何,不管怎样,SQS 中没有任何功能会根据消息的内容而有所不同。它很简单“存储消息,检索消息”。
-
哦@JohnRotenstein,这说明了吗?谢谢
标签: amazon-web-services message-queue