【发布时间】:2012-07-04 14:40:31
【问题描述】:
我有以下场景:
- 对于需要处理的作业,包含作业描述的消息将发送到 Amazon SQS 消息队列
- 我有不同的流程来完成工作
需要满足以下条件:
- 如果一个进程未能完成一项作业(可能是因为它所运行的服务器崩溃),则该作业必须再次可供其他进程使用。
- 在处理一个作业时,具有相同描述的其他作业必须等到第一个作业完成或超时。
- 系统应该可以根据消息队列长度轻松扩展。
为了确保(1),我的第一个想法是使用 Amazon SQS 队列提供的消息锁定功能,但是我如何确保(2)呢?将流程分配给职位描述是一种选择,但是(3)会更加困难。
【问题讨论】:
-
您说“其他具有相同描述的工作”是什么意思?我们可能需要更多详细信息来提供帮助。例如,如果我们正在调整图像大小,那么将系统限制为一次只执行一次调整大小操作是没有意义的。
-
我认为将问题表述得相当抽象会更清楚,但这里有一些细节:它是关于时间序列(一组历史数据)的计算模式。具有“相同描述”的作业意味着他们必须计算相同时间序列的模式。每当更新时间序列的历史数据时,都会通过向队列发送相应的消息来触发模式重新计算。
标签: amazon-web-services amazon-sqs