我有一些java代码在SQS中运行的作业中调用Thread.sleep(100_000)。在生产中,在睡眠期间,工作经常被杀死并重新提交为失败。在开发中我永远无法重新创建它。生产中的SQS是否会扼杀长期工作?
答案 0 :(得分:4)
SQS不会杀死工作 - 我不确定你的代码是什么意思&在SQS'中运行 - SQS的作用是假设你的工作(在SQS以外的某个地方运行),如果你没有在设置队列时设置的超时(默认可见性超时)内完成标记,那就失败了。 / p>
您的工作要求SQS处理要处理的项目(要处理的消息) - 您的工作应该执行该工作,然后告诉SQS该工作现在已完成(deletemessage)。如果您没有告诉它已完成,SQS会假设您已完成作业失败并将消息放回队列中以便处理其他任务。
如果您需要更多时间来完成任务,可以根据需要将默认可见性超时更改为更高的值。