全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
消息服务

QueueMessage

更新时间:2017-06-07 13:26:11

队列消息

用户发送到队列的消息;
发送消息时可以指定消息体、消息延迟时长、消息优先级;

消息属性

MessageId

  • 消息编号;
  • (batch) send/receive/peek message 操作返回该属性;
  • 一个队列中每个消息都有唯一的 MessageId;
  • 消息发送到队列中,MNS 会生成一个 MessageId,该编号一旦生成就不会变化,可以用来做数据校对;

NextVisibleTime

  • 消息下次可被消费的时间,从1970年1月1日 00:00:00 000 开始的毫秒数;
  • (batch) receive message 和 change message visibility 操作返回该属性;

ReceiptHandle

  • 消息临时句柄;
  • (batch) receive message 和 change message visibility 操作返回该属性;
  • 该句柄用于删除和修改处于Inactive状态的消息,NextVisibleTime之前有效,超过该时间使用句柄 MNS 会提示MessageNotExist;
  • 消息临时句柄只能使用一次,如果该句柄标识的消息状态发生改变,该句柄就会失效;

MessageBody

  • 消息正文;
  • (batch) receive/peek message 操作返回该属性;

MessageBodyMD5

  • 消息正文的MD5值;
  • (batch) send/receive/peek message 操作返回该属性;

EnqueueTime

  • 消息发送到队列的时间,从 1970年1月1日 00:00:00 000 开始的毫秒数;
  • (batch) receive/peek message 操作返回该属性;

FirstDequeueTime

  • 消息第一次被消费的时间,从1970年1月1日 00:00:00 000 开始的毫秒数;
  • (batch) receive/peek message 操作返回该属性;
  • 如果消息从未被消费过,该属性与EnqueueTime相同;

DequeueCount

  • 消息总共被消费的次数(即被receive的次数);
  • (batch) receive/peek message 操作返回该属性;

Priority

  • 消息的优先级权值,取值范围:1~16,其中1为最高优先级;
  • (batch) receive/peek message 操作返回该属性;
  • 如果队列中有不同优先级的消息,优先级越高的消息越容易更早被消费(既被ReceiveMessage操作取出);
  • MNS会尽量让高优先级的消息先出队列,正是因为分布式消息队列的一些特性不能百分之百保证高优先级的消息先被消费;

消息类型

延时消息

  • 这类消息发送到队列后,需要经过 DelaySeconds 指定的时间后才可被消费;
  • 发送(batch)send message请求时指定或者配置队列的 DelaySeconds 属性;

消息状态

  • 普通消息被发送到普通队列时,初始状态是 Active,当其被取走后在VisibilityTimeout 的时间内状态为 Inactive,若超过 VisibilityTimeout 时间后消息还未被删除,消息会重新变成Active状态;如果在VisibilityTimeout 时间内被删除, 消息状态变为 Deleted。
  • 普通消息发送到延时队列时,消息初始状态 Delayed,经过延时队列的 DelaySeconds 属性值设定的时间后,消息状态变成 Active。
  • 延时消息发送到消息队列(普通队列或者延时队列),消息的初始状态为 Delayed,经过消息的 DelaySeconds 属性指定的时间后消息状态变成 Active。
  • 消息的最长存活时间由创建队列时指定的 MessageRetentionPeriod 属性值决定,超过此时间后消息状态会变成 Expired,将被垃圾回收器回收。
  • 消费者只能取到处于 Active 状态的消息。
本文导读目录