一.消息的生命周期(以腾讯云cos为例子)

 

普通消息被发送到普通消息队列时, 初始状态为 Active

当其被取走后在 VisibilityTimeout (消息隐匿时间)的时间内状态为 Inactive

若超过 VisibilityTimeout (消息隐匿时间)时间后消息还未被删除,消息会重新变成 Active 状态;

如果在 VisibilityTimeout (消息隐匿时间)时间内被删除,消息状态将变为 Deleted

消息的最长存活时间由创建队列时指定的 MessageRetentionPeriod 属性值决定,

超过此时间后消息状态变成 Expired 并将被回收。

 

这保证了同一条消息不会同时被多次消费,但可被顺序性地多次消费。

 

一旦取出消息隐藏时长过期后该消息被再次接受并处理;也可以不删除Message A,该消息可以被其他业务多次消费。

消息不被删除将会被重复消费