队列(Queue)

本文介绍轻量消息队列(原 MNS)中队列(Queue)的定义、模型关系、队列属性及使用限制。

定义和模型关系

轻量消息队列(原 MNS)中,一个队列是一个存储消息的容器。生产者将消息发送到队列中,而消费者则从队列中消费消息。

image

功能说明

  • 至少一次(At least once):在消息保存时长和最大投递次数范围内的消息,每一条都将被接收方接收并处理至少一次。

  • 批量处理:支持批量发送、接收和删除消息,每批最多处理16条消息。

  • 长轮训:使用长轮训的方式接收消息,可以减少请求次数帮助您降低费用。长轮训最大等待时间为30秒。更多信息,请参考短轮询和长轮询

  • 消息不可见时间:当某个消费者收到消息后,该条消息对队列的其它消费者不可见,防止一条消息同时被多个消费者处理。如果消息处理失败或者超过不可见时间,消息可被其它消费者重新接收消费。

队列属性

队列名称

  • 定义:队列的名称,用于标识队列,集群内全局唯一。

  • 取值:120个字符以内,必须以英文字母或者数字开头,剩余名称可以是英文、数字、短划线(-)。

消息最大长度

  • 定义:队列的MaxMessageSize属性, 限定允许发送到该队列的消息体的最大长度。单位:KB。

  • 取值:1~64 KB。

长轮询时间

  • 定义:队列的PollingWaitSeconds属性,设为0时会关闭长轮询;当不为0时,长轮询模式开启,此时一个消息消费请求只会在取到有效消息或长轮询超时后才返回响应。单位:秒。

  • 取值:0~30秒。

消息可见性超时时间

  • 定义:队列的VisibilityTimeout属性,消息从本队列中取出后会被从Active可取状态变成Inactive隐藏状态,该属性指定了消息隐藏状态的持续时间,这个时间到达后如果消息未被客户端确认消费成功,消息会从Inactive隐藏状态恢复成Active可取状态,此时可能造成重复投递,业务需要根据实际的消息处理耗时合理设置该属性。单位:秒。

  • 取值:1~43200秒,即1秒至12小时。

消息保存时长

  • 定义:队列的MessageRetentionPeriod属性,消息在本队列中最长的保存时间,即从发送到该队列开始到此参数指定的时间结束,不论消息是否被取出过都将被删除。单位:秒。

  • 取值:60~604800秒,即1分钟至7天。

消息定时时间

  • 定义:队列的DelaySeconds属性,发送到本队列的所有消息默认将以本参数指定的时间被延后消费。单位:秒。

  • 取值:0~604800秒,即0秒至7天。

启动日志功能

  • 定义:开启日志功能后,SMQ将自动推送该队列的操作日志到指定的LoggingBucket中。然后您可以通过日志查看消息轨迹,消息延迟以及其他信息。更多信息,请参见日志管理

  • 取值:true/false。

使用限制

限制项

限制值

说明

命名长度

120字符

超过该限制,队列创建失败。

队列数量

1000个

消息大小

64 KB

超过该限制,消息会被丢弃。

批量接口

16条

长轮询

30秒

消息保存时间

7天

超过时间将自动滚动删除,建议按照需求设置。