根据文档,可见性超时从 Amazon SQS 返回消息时开始。在此期间,消费者处理并删除消息。但是,如果使用者在删除消息之前失败,并且您的系统在可见性超时到期之前未调用该消息的 DeleteMessage 操作,则该消息将变为可见。
使用Spring Boot 3
@SqsListener
时,默认确认模式为ON_SUCCESS,如文档。
现在,如果确认模式为
ON_SUCCESS
且可见性超时为30分钟,但消息处理在15分钟时失败。失败后消息会立即可见还是 SQS 将等待 30 分钟以使消息对其他消费者可见。
该消息将继续对其他消费者隐藏,直到可见性超时到期。
但是,您可以将 Visibility 的实例注入到您的方法中,并在异常处理程序中将可见性更改为 0。这将使其他消费者立即看到该消息。