代码之家  ›  专栏  ›  技术社区  ›  Andrew Arrow

SQS是否会杀死具有线程的长时间运行的作业。睡觉

  •  1
  • Andrew Arrow  · 技术社区  · 6 年前

    我有一些调用线程的java代码。在SQS中运行的作业内休眠(100\u 000)。在生产中,在睡眠期间,作业经常被终止,并作为失败重新提交。在dev上,我永远无法重新创建它。生产中的SQS会杀死长期运行的作业吗?

    1 回复  |  直到 6 年前
        1
  •  5
  •   E.J. Brennan    6 年前

    SQS不会杀死作业—我不确定您所说的代码“在SQS中运行”是什么意思—SQS所做的是假设您的作业(在SQS以外的某个位置运行)已失败,如果您没有在设置队列时设置的超时(默认可见性超时)内标记它已完成。

    您的作业要求SQS提供要处理的项目(要处理的消息)-您的作业应该完成该工作,然后告诉SQS作业现在已完成(deletemessage)。如果您没有告诉它已完成,SQS会为您假设作业已失败,并将消息放回队列中以供另一个任务处理。

    如果需要更多时间来完成任务,可以根据需要将默认可见性超时更改为更高的值。