閱讀637 返回首頁    go 群英


QueueMessage__基本概念_API使用手冊_消息服務-阿裏雲

隊列消息

用戶發送到隊列的消息;
發送消息時可以指定消息體、消息延遲時長、消息優先級;

消息屬性

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 狀態的消息。

最後更新:2016-12-20 10:52:18

  上一篇:go Queue__基本概念_API使用手冊_消息服務-阿裏雲
  下一篇:go Topic__基本概念_API使用手冊_消息服務-阿裏雲