Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 限制队列服务_Amazon Web Services_Message Queue - Fatal编程技术网

Amazon web services 限制队列服务

Amazon web services 限制队列服务,amazon-web-services,message-queue,Amazon Web Services,Message Queue,我有一个函数doWork(id),我正在使用AWS SQS将它卸载到一些工作服务器上。这个函数可以被频繁调用,但是我想限制这个函数,这样对于给定的id,工作不会超过每秒一次 AWS是否可能/是否有任何具有此功能的服务 编辑:一些澄清 doWork(id)对数据库中的记录执行一些昂贵的工作。每当用户与记录交互时,这项工作都需要不断更新。因此,每当用户调用编辑记录的方法时,我就调用doWork(id)。但是,用户可以非常快速地多次编辑记录(我正在构建一个文本编辑器,这样每个字符都可以编辑)。我不想

我有一个函数
doWork(id)
,我正在使用AWS SQS将它卸载到一些工作服务器上。这个函数可以被频繁调用,但是我想限制这个函数,这样对于给定的id,工作不会超过每秒一次

AWS是否可能/是否有任何具有此功能的服务


编辑:一些澄清

doWork(id)
对数据库中的记录执行一些昂贵的工作。每当用户与记录交互时,这项工作都需要不断更新。因此,每当用户调用编辑记录的方法时,我就调用
doWork(id)
。但是,用户可以非常快速地多次编辑记录(我正在构建一个文本编辑器,这样每个字符都可以编辑)。我不想让doWork(id)花费不必要的时间,我想限制这种工作,使其每秒最多发生一次

因为这项工作很昂贵,所以我在SQS中将消息排队,并拥有一组“工作”服务器,这些服务器将任务排队并运行它们


我的目标是在限制
doWork(id)
的同时,以某种方式维护服务器的无状态水平可伸缩性。让事情变得更复杂一点,我不想限制
doWork
函数本身——我想限制通过传递给
doWork
的id标识的每个记录的工作。您可以在ElastiCache上使用Redis实例,并配置工作人员基于
id
使用for键。基于这种想法,也有许多针对不同语言的软件包可以在您的工作人员上运行。

您可以在ElastiCache上使用Redis实例,并将您的工作人员配置为基于
id
的for键。基于这种想法,还有许多针对不同语言的软件包可以在您的工作人员身上运行。

这很有趣。您希望延迟工作,以防他们在给定的时间段内按下另一个键。如果他们在这段时间内没有按另一个键,那么你就想做这项工作。即使他们继续键入(自动保存),您也可能希望在x秒后执行此操作

问题是每个按键都会向队列发送一条消息。当工作人员收到消息时,他们不知道消息发送后是否按下了另一个键,并且无法在队列中查找其他匹配消息

Amazon SQS确实能够延迟消息,这意味着在给定的时间段内无法接收消息,但这本身无法解决问题,因为工作人员不知道还发生了什么


底线:传统队列不适合此用例。您需要类似于数据库/缓存的东西,它可以在每次按下键时更新“上次修改的”时间戳。一旦时间戳超过x秒,您就应该让工作人员排队。

这很有趣。您希望延迟工作,以防他们在给定的时间段内按下另一个键。如果他们在这段时间内没有按另一个键,那么你就想做这项工作。即使他们继续键入(自动保存),您也可能希望在x秒后执行此操作

问题是每个按键都会向队列发送一条消息。当工作人员收到消息时,他们不知道消息发送后是否按下了另一个键,并且无法在队列中查找其他匹配消息

Amazon SQS确实能够延迟消息,这意味着在给定的时间段内无法接收消息,但这本身无法解决问题,因为工作人员不知道还发生了什么


底线:传统队列不适合此用例。您需要类似于数据库/缓存的东西,它可以在每次按下键时更新“上次修改的”时间戳。一旦时间戳超过x秒,您就应该让工作人员排队。

不幸的是,您的解释不是很清楚。您能否编辑您的问题以澄清嫁妆、SQS和员工之间的关系?无论如何,不管怎样,SQS中没有根据消息内容而变化的特性。这很简单,“存储消息,检索消息”。哦@JohnRotenstein,这澄清了吗?谢谢,幸运的是,你的解释不是很清楚。您能否编辑您的问题以澄清嫁妆、SQS和员工之间的关系?无论如何,不管怎样,SQS中没有根据消息内容而变化的特性。这很简单,“存储消息,检索消息”。哦@JohnRotenstein,这澄清了吗?谢谢