Amazon web services AmazonSQS消息队列

Amazon web services AmazonSQS消息队列,amazon-web-services,amazon-sqs,Amazon Web Services,Amazon Sqs,我有以下情况: 对于需要处理的作业,将包含作业描述的消息发送到AmazonSQS消息队列 我有不同的工作流程 需要满足以下条件: 如果一个进程无法完成作业(可能是因为它运行的服务器崩溃),则该作业必须再次可供其他进程使用 在处理一个作业时,具有相同描述的其他作业必须等待,直到第一个作业完成或达到其超时 根据消息队列长度,系统应易于扩展 为了确保(1),我的第一个想法是使用AmazonSQS队列提供的消息锁定功能,但是如何确保(2)?将流程分配给职务描述是一个选项,但是(3)将更加困难。设置更

我有以下情况:

  • 对于需要处理的作业,将包含作业描述的消息发送到AmazonSQS消息队列
  • 我有不同的工作流程
需要满足以下条件:

  • 如果一个进程无法完成作业(可能是因为它运行的服务器崩溃),则该作业必须再次可供其他进程使用
  • 在处理一个作业时,具有相同描述的其他作业必须等待,直到第一个作业完成或达到其超时
  • 根据消息队列长度,系统应易于扩展
  • 为了确保(1),我的第一个想法是使用AmazonSQS队列提供的消息锁定功能,但是如何确保(2)?将流程分配给职务描述是一个选项,但是(3)将更加困难。

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

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

    这涉及到#1和#2

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

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

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

    这涉及到#1和#2


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

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