如果侦听器被杀死,SQS 消息会发生什么情况?
What happens to a SQS message if listener gets killed?
比如说,我有一个 SQS 和一个侦听该队列的侦听器进程。说,有一条消息,在处理消息时,说进程自动终止。那么,这个消息会怎样呢?它会再次前往 SQS 还是继续飞行?如果已配置,它会转到 DLQ 吗?
您的消息将有一个“隐身超时”。在此期间 window 后续消息请求不会返回它们。
一旦超时,消息将由另一个调用返回。
一旦您“确认”了消息,它就不会被再次处理。
通常SQS使用“至少一次”语义。在您的队列的最大年龄之前,它将重新处理消息,直到它们被成功处理。
如果没有一些非常疯狂的事情(您在 14 天内一直未能发送消息),它将确保您的消息得到处理。
这确实意味着您 运行 响应消息的代码需要是幂等的(需要 运行 多次而不改变结果)。
但如果您能做到这一点,并且可以在 14 天以内对代码中的错误做出响应,那么您的消息将得到处理。
这有意义吗?
比如说,我有一个 SQS 和一个侦听该队列的侦听器进程。说,有一条消息,在处理消息时,说进程自动终止。那么,这个消息会怎样呢?它会再次前往 SQS 还是继续飞行?如果已配置,它会转到 DLQ 吗?
您的消息将有一个“隐身超时”。在此期间 window 后续消息请求不会返回它们。
一旦超时,消息将由另一个调用返回。
一旦您“确认”了消息,它就不会被再次处理。
通常SQS使用“至少一次”语义。在您的队列的最大年龄之前,它将重新处理消息,直到它们被成功处理。
如果没有一些非常疯狂的事情(您在 14 天内一直未能发送消息),它将确保您的消息得到处理。
这确实意味着您 运行 响应消息的代码需要是幂等的(需要 运行 多次而不改变结果)。
但如果您能做到这一点,并且可以在 14 天以内对代码中的错误做出响应,那么您的消息将得到处理。
这有意义吗?