AWS SQS控制台中的“Messages available”指标是什么含义?
AWS SQS控制台中「Messages available」的含义
Messages available指的是队列里当前可以被消费者正常拉取处理的消息总数,也就是消费者调用ReceiveMessage接口时,能够直接获取到的消息。
你已经清楚的Messages in flight(处理中)消息,就是「不可用」消息的最主要组成部分。SQS之所以会给消息划分可用、不可用状态,核心是为了配合可见性超时机制,避免消息被重复消费,不同状态对应消息生命周期的不同阶段:
- 消息被生产者成功发送到队列、还没被任何消费者拉取时,默认就是可用状态,会计入
Messages available的统计值 - 当某条消息被消费者拉取到之后,SQS会立刻启动你预先配置的可见性超时计时器:在这个超时窗口里,这条消息会暂时对所有消费者隐藏,不会被其他消费者重复拉取,此时消息就从可用状态转为处理中(in flight)状态,不再计入
Messages available数值 - 如果在可见性超时窗口结束前,消费者没有成功给SQS返回消息删除确认(比如消费进程意外崩溃、业务处理报错没执行删除操作),这条消息会自动从处理中状态切回可用状态,重新可以被所有消费者拉取,再次计入
Messages available统计 - 除了处理中的消息之外,设置了延迟投递还没到投递时间的消息、死信队列重驱动过程中暂时不允许拉取的消息,也都属于不可用范畴,不会被算进这个指标里
注意:SQS是分布式架构的消息队列,控制台展示的
Messages available是近似实时的统计值,和队列里实际的可消费消息精确数量会存在微小偏差,不要拿这个数值做精确的业务逻辑判断依据。

内容的提问来源于stack exchange,提问作者mikemaccana
相关产品推荐
相关产品推荐

