全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
消息服务

队列模型名词解释

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

队列是消息存储的目的地,队列可以分成普通队列和延时队列两类。
消息包含数据和属性,可以分成普通消息和延时消息,在一个队列中能唯一标识一个消息的有 MessageId 和 ReceiptHandle 两种。

Account

即用户的阿里云帐号ID。

队列所有者

开通 MNS 服务的 Account 通过 CreateQueue 接口创建出一个消息队列,这个 Account 就是该队列的所有者,队列所有者拥有此队列的所有操作权限。队列所有者对应的 Account ID 在阿里云官网可以查看。

生产者、消费者

生产者,向 MNS 的消息队列发送消息的角色。
消费者,从 MNS 的消息队列获取消息的角色。

普通队列

如果发送消息时不指定消息延时参数,消息发送到普通队列后可立即被消费。

延时队列

如果发送消息时不指定消息延时参数,发送到延时队列的消息需要经过一定的时间后才能被取到。用户可以通过 CreateQueue 和 SetQueueAttribute 指定队列的延时时长。

Endpoint

MNS的访问域名地址, 格式如下:http://$AccountId.mns.$Region.aliyuncs.com/

  • mns.<Region>.aliyuncs.com: Region 是 MNS服务部署的区域,用户可以根据应用需要选择不同的地域.
  • AccountId: 队列所有者的帐号 ID,调用API请求时需替换成实际的帐号ID.

普通消息、延时消息

  • 普通消息是指被发送到队列马上可以被取到的消息;
  • 延时消息是指消息发送到队列后需要经过一定的时间后才能被取到的消息,延时时长由 DelaySeconds 属性定(请参考 SendMessage 相关属性定)。

消息ID(MessageID)

MessageId 用来标识在队列中的一个消息,在一个队列中每个消息都有唯一的 MessageId, 但在不同队列之间并不唯一。当消息发送到 MNS 的队列, MNS 会生成一个 MessageId,此 ID 一旦产生就不会改变, 并在请求响应中返回,用户主要可以使用此 MessageId 来做数据校对,但是删除消息必须使用 ReceiptHandle。

临时句柄(ReceiptHandle)

ReceiptHandle 是由 MNS 根据当时获取消息的行为产生的临时消息标识,这一点不同于 MessageId。 当要删除已消费的消息或者改变其VisiblityTimeout 属性值,需要用 ReceiptHandle 指定已消费过的消息。 ReceiptHandle 只能被使用一次, 如果 ReceiptHandle 标识的消息状态改变其就会失效,消费者只有通过获取消息后重新获取 ReceiptHandle 才能进行上述操作。

消息状态(Message Status)

消息生命周期

普通消息被发送到普通消息队列时, 初始状态是 Active,当其被取走后在 VisibilityTimeout 的时间内状态为 Inactive,若超过 VisibilityTimeout 时间后消息还未被删除,消息会重新变成 Active 状态;如果在VisibilityTimeout 时间内被删除,消息状态为 Deleted。

普通消息发送到延时队列时,消息初始状态 Delayed,经过延时队列的 DelaySeconds 属性值设定的时间后,消息状态变成 Active。

延时消息发送到队列(普通队列或者延时队列),消息的初始状态为 Delayed,经过消息的 DelaySeconds 属性指定的时间后消息状态变成 Active。

消息的最长存活时间由创建队列时指定的 MessageRetentionPeriod 属性值决定, 超过此时间后消息状态会变成 Expired,将被垃圾回收器回收。

消费者只能取到处于 Active 状态的消息。

消息生命周期

本文导读目录
本文导读目录
以上内容是否对您有帮助?