【问题标题】:Amazon SQS message queueAmazon SQS 消息队列
【发布时间】:2012-07-04 14:40:31
【问题描述】:

我有以下场景:

  • 对于需要处理的作业,包含作业描述的消息将发送到 Amazon SQS 消息队列
  • 我有不同的流程来完成工作

需要满足以下条件:

  1. 如果一个进程未能完成一项作业(可能是因为它所运行的服务器崩溃),则该作业必须再次可供其他进程使用。
  2. 在处理一个作业时,具有相同描述的其他作业必须等到第一个作业完成或超时。
  3. 系统应该可以根据消息队列长度轻松扩展。

为了确保(1),我的第一个想法是使用 Amazon SQS 队列提供的消息锁定功能,但是我如何确保(2)呢?将流程分配给职位描述是一种选择,但是(3)会更加困难。

【问题讨论】:

  • 您说“其他具有相同描述的工作”是什么意思?我们可能需要更多详细信息来提供帮助。例如,如果我们正在调整图像大小,那么将系统限制为一次只执行一次调整大小操作是没有意义的。
  • 我认为将问题表述得相当抽象会更清楚,但这里有一些细节:它是关于时间序列(一组历史数据)的计算模式。具有“相同描述”的作业意味着他们必须计算相同时间序列的模式。每当更新时间序列的历史数据时,都会通过向队列发送相应的消息来触发模式重新计算。

标签: amazon-web-services amazon-sqs


【解决方案1】:

设置更长的“VisibilityTimeout”值。确保此值比完成作业通常所需的时间长。

如果收到此作业的机器未能完成(或未能及时完成),则该消息将再次可供新机器处理。

这涉及 #1 和 #2。

对于#3,我相信您可以根据 SQS 队列的大小设置自动缩放触发器,因此如果您有更多消息,AWS 会自动启动新实例来处理它们。

【讨论】:

    猜你喜欢
    • 2013-10-17
    • 2019-12-31
    • 2018-08-29
    • 2014-10-10
    • 2017-02-07
    • 1970-01-01
    • 2018-09-24
    • 2017-02-03
    • 2018-10-25
    相关资源
    最近更新 更多