说,我有一个SQS和一个监听该队列的监听器进程。假设有一条消息,并且在处理该消息时说该进程已自动终止。那么,此消息将如何处理?它会再次进入SQS还是继续飞行?还是将其配置为DLQ?
答案 0 :(得分:2)
您的测量将出现“隐形超时”。在此时间段内,后续的消息请求不会退还它们。
一旦超时,该消息将由另一个呼叫返回。
一旦您“确认”了该消息,便不会再对其进行处理。
通常,SQS使用“至少一次”语义。直到您的队列的最长使用期限,它都会重新处理邮件,直到成功处理为止。
如果没有真正疯狂的内容(您在14天内一直使邮件失败),它将确保您的邮件得到处理。
这确实意味着您为响应消息而运行的代码必须是幂等的(需要多次运行而不改变结果)。
但是,如果您能够做到这一点,并且可以在14天之内对代码中的错误进行响应,那么将保证您对消息进行处理。
这有意义吗?