Account

Account 是阿里云的注册用户,在 MNS 中以阿里云注册帐号的 ID 表示。

队列模型

队列所有者

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

生产者、消费者

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

主题模型

主题所有者

开通 MNS 服务的 Account 通过 CreateTopic 接口创建出一个主题,这个 Account 就是该主题的所有者,主题所有者拥有该主题的所有操作权限。

发布者、订阅者

发布者,向 MNS 的主题发布消息的角色。
订阅者,从 MNS 的主题接收消息的角色。

Queue

队列是消息存储的目的地,队列可以分成普通队列和延时队列两类。
如果发送消息时不指定消息延时参数,被发送到普通队列的消息立刻可以被消费,而发送到延时队列需要经过设定的延时时间后才能被消费。

队列属性

DelaySeconds消息延迟时间,单位为秒;
取值范围:0 ~ 604800秒(7天);
当该属性大于0时,发送到队列的所有消息是延迟消息,经过该属性指定的秒数后变为可消费消息;
如果发送消息请求指定了DelaySeconds,以请求指定的DelaySeconds为准;MaximumMessageSize消息体最大长度,单位为Byte;
取值范围:1024 ~ 65536Byte(64KB);
该属性用于限制发送到队列的消息体最大长度,超过该长度发送消息失败;MessageRetentionPeriod消息最长保留时间,单位为秒;
取值范围:60 ~ 1296000秒(15天);
发送到队列的消息最长保留该时长,超过指定时间,无论消息是否被消费都将被删除;VisibilityTimeout消息被receive后的隐藏时长,单位为秒;
取值范围:1 ~ 43200秒(12小时);
消息被receive后,在该属性指定的这段时间内消息处于隐藏状态,在这段时间内,可以删除消息或者修改消息隐藏时长;超过这段时间,消息可以再次被receive;PollingWaitSeconds(batch)receive message请求最长等待时间,单位为秒;
取值范围:0 ~ 30秒;
当队列中没有消息时,(batch)receive message请求将挂在 MNS 服务器端;在该属性指定的时间范围内,如果有消息发送到队列中,立即返回消息给用户;如果超过该时间,仍然没有消息,返回MessageNotExist;
如果(batch)receive message请求指定了wait seconds,以请求指定的时间为准;LoggingEnabled是否开启日志管理功能;
取值范围:True/False;
当该属性为True时,MNS 将收集队列的消息操作日志推送到指定的地方,日志管理请参考详情;CreateTime队列创建时间,从1970-1-1 00:00:00 到现在的秒值;LastModifyTime修改队列属性信息最近时间,从1970-1-1 00:00:00 到现在的秒值;ActiveMessages队列中处于 Active 状态的消息总数,为近似值;InactiveMessages队列中处于 Inactive 状态的消息总数,为近似值;DelayMessages队列中处于 Delayed 状态的消息总数,为近似值;

QueueURL

格式:http://$AccountId.mns.<Region>.aliyuncs.com/queues/$QueueName
mns.<Region>.aliyuncs.com: MNS 访问域名, Region 是 MNS 部署的区域,用户可以根据应用需要选择不同的地域;
AccountId: 队列所有者的帐号 ID;
QueueName: 队列名称,同一个AccountId在同 Region 中的队列名不能重名。

QueueMessage

队列消息

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

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 状态的消息。

Topic

主题是发布消息的目的地,发布者可以通过 PublishMessage 接口向主题发布消息。

主题属性

MaximumMessageSize消息体的最大长度,单位为Byte;
取值范围:1024 ~ 65536Byte(64KB);
该属性用于限制发送到队列的消息体最大长度,超过该长度发布消息将失败;LoggingEnabled是否开启日志管理功能;
取值范围:True/False;
当该属性为True时,MNS 将收集主题的消息操作日志推送到指定的地方,日志管理请参考详情;CreateTime主题的创建时间,从 1970-1-1 00:00:00到现在的秒值;LastModifyTime修改主题属性信息的最近时间,从 1970-1-1 00:00:00 到现在的秒值;MessageRetentionPeriod消息在主题中的最长保留时间,单位为秒;
从发送到该主题开始经过此参数指定的时间后,不论消息是否被成功推送给用户都将被删除;MessageCount该主题中消息数目;
包含已经被推送给用户的消息,不包含过期被回收的消息;

TopicURL

标识 Topic 的URL,格式:http://$AccountId.mns.<Region>.aliyuncs.com/topics/$TopicNamemns.<Region>.aliyuncs.com:MNS 访问域名,Region 是 MNS 部署的区域,用户可以根据应用需要选择不同的地域,具体各区域的访问域名可以在控制台通过 获取地址 操作查看。
AccountId:主题所有者的帐号 ID,实际调用 MNS 的 API 时请换成实际的帐号 ID,查看方法请参考 快速入门。
TopicName:主题的名称,MNS 使用者在实际调用 MNS 的 API 时替换成实际的主题名称。同一个 AccountId 在同一个 Region 中的主题名称不能重名。

TopicMessage

用户发布到主题的消息;
发布消息时可以指定消息体、消息标签和消息额外属性;
主题消息的最长保留时间为1天,超过这个时间,不论消息是否成功推送给用户,都将被垃圾回收器回收;

消息属性

MessageId消息的编号;
一个主题中每个消息都有唯一的 MessageId;Message消息正文;MessageMD5消息正文的MD5值;MessageTag消息的标签;
当发布消息时指定了消息标签,MNS 将只推送消息给接收这类标签消息的订阅;PublishTime消息的发布时间,从 1970-1-1 00:00:00 000 到消息发布时的毫秒值;

Subscription

Subscription 描述一个订阅关系,包括被订阅的主题和接收消息的Endpoint;
订阅者通过 Subscribe 接口创建订阅,MNS 根据订阅的描述给用户推送消息,推送的起点是订阅时 Topic 中最新的消息;
订阅创建成功后,MNS 会向指定的 Endpoint 推送消息。如果 Endpoint 不可用,MNS 会按照指定的重试策略进行重试,重试失败后,会丢弃消息;

订阅属性

Endpoint接收消息的Endpoint;
支持类型:HttpEndpoint、QueueEndpoint和MailEndpoint;FilterTag过滤消息的标签;
类型:字符串;
指定了该属性后,MNS 仅推送消息标签与该属性一致的消息到对应的Endpoint;NotifyStrategy消息推送出现错误时的重试策略;
取值范围:BACKOFF_RETRY/EXPONENTIAL_DECAY_RETRY;
当推送消息失败时,MNS 将按照该属性指定的重试策略进行重试,超过重试策略的次数后,MNS 将丢弃这条消息,继续推送下一条消息;
具体的重试策略请参考 NotifyStrategy;NotifyContentFormat推送给Endpoint的消息格式;
取值范围:XML/SIMPLIFIED;
具体推送消息的格式请参考 NotifyContentFormat;CreateTime订阅的创建时间,从 1970-1-1 00:00:00 到现在的秒值;LastModifyTime修改订阅属性信息的最近时间,从 1970-1-1 00:00:00 到现在的秒值

SubscriptionURL

标识 Subscription 的 URL 格式:http://$AccountId.mns.<Region>.aliyuncs.com/topic/$TopicName/subscriptions/$SubscriptionNamemns.<Region>.aliyuncs.com:MNS 访问域名,Region 是 MNS 部署的区域,用户可以根据应用需要选择不同的区域,具体各区域的访问域名可以在控制台通过 获取地址 操作查看;
AccountId:表示主题所有者的帐号 ID,实际调用 MNS 的 API 时请替换成实际的帐号 ID;
TopicName:表示主题的名称,实际调用 MNS 的 API 时请替换成实际的主题名称;
SubscriptionName:表示Subscription的名称,实际调用 MNS 的 API 时请替换成实际 Subscription 的名称。同一个订阅者订阅相同的主题时,SubscriptionName 不能重复。

Endpoint

Endpoint 是用户订阅主题时,指定接收消息的终端地址;
当有消息发布到主题时,MNS 会主动将消息推送到对应的 Endpoint;
多个 Subscription 可以指定同一个 Endpoint;

HttpEndpointhttp 格式的Endpoint;
格式:http://$company.com[/uri],支持多级uri;
限制:Endpoint的uri不能以 “mns-reserverd-“ 开头;
MNS 将发送 http 请求到指定的Endpoint,用户在Endpoint端处理请求即可;QueueEndpoint以队列的资源描述作为Endpoint;
格式:acs:mns:{REGION}:{AccountID}:queues/{QueueName} ;
限制:只支持推送到 Topic 同Region同账号的队列中;
MNS 直接将消息写入到指定的队列中,用户通过receive message接口读取消息,具体使用方式请参考详情;MailEndpoint以Mail名称作为Endpoint;
格式:mail:directmail:{MailAddress};
MNS 将以mail的形式将消息推送到指定的邮箱中,具体使用方式请参考详情;

NotifyStrategy

NotifyStrategy 描述了 MNS 向 Enpoint 推送消息出现错误时的重试策略。MNS 支持以下几种重试策略,用户订阅主题时,可以指定一种重试策略:

策略 描述 参数
退避重试策略 重试 3 次,每次重试的间隔时间是 10秒 到 20秒 之间的随机值 BACKOFF_RETRY
指数衰减重试 重试 176 次,每次重试的间隔时间指数递增至 512秒,总计重试时间为1天;每次重试的具体间隔为:1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 512 … 512 秒 (共167个512) EXPONENTIAL_DECAY_RETRY

NotifyContentFormat

NotifyContenFormat 用于指定 MNS 向 Endpoint 推送消息时,消息内容的格式。

XML消息体为XML格式,包含消息正文和消息属性;
HttpEndpoint和QueueEndpoint支持该格式;
消息示例:
    <?xml version="1.0" encoding="utf-8"?><Notification xlmns="http://mns.aliyuncs.com/doc/v1/"><TopicOwner>TopicOwner</TopicOwner><TopicName>TopicName</TopicName><Subscriber>Subscriber</Subscriber><SubscriptionName>SubscriptionName</SubscriptionName><MessageId>6CC4D900CA59A2CD-1-15180534A8F-200000002</MessageId><Message>{1:"a", 2:"b"}</Message><MessageMD5>F1E92841751D795AB325861034B5CB55</MessageMD5><MessageTag>important</MessageTag><PublishTime>1449556920975</MessagePublishTime></Notification>
JSON消息体为JSON格式,包含消息正文和消息属性;
HttpEndpoint和QueueEndpoint支持该格式;
消息示例:
    {"TopicOwner":"TopicOwner","TopicName":"TopicName","Subscriber":"Subscriber","SubscriptionName":"SubscriptionName","MessageId":"6CC4D900CA59A2CD-1-15180534A8F-200000002","Message":"xxxxx","MessageMD5":"F1E92841751D795AB325861034B5CB55","MessageTag":"important","PublishTime":"1449556920975"}
SIMPLIFIED消息体即用户发布的消息,不包含任何属性信息;
HttpEndpoint、QueueEndpoint、MailEndpoint均支持该格式;
消息体示例:
    {1:"a", 2:"b"}

阿里云消息服务(Message Service)-基本概念相关推荐

  1. 阿里云消息服务MNS-PHP+SDK

    队列使用手册 - 消息服务MNS - 阿里云 1.使用composer或者直接下载 2.在使用的地方去引入 3.直接封装好发消息的类 使用的时候直接调用

  2. 使用阿里云消息服务mns发送短信

    下载mns wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32305/cn_zh/1490269182462 ...

  3. PHP安装阿里云消息服务MNS的SDK

    首先配置好PHP和Composer https://blog.csdn.net/msllws/article/details/106399646 然后在网站根目录打开命令行执行 composer re ...

  4. php集成阿里MNS消息服务

    一.使用背景 请看下图: (1)服务端发布消息给物联网套件.设备从物联网套件订阅消息. (2)设备发布消息到物联网套件,物联网转发消息到MNS消息服务,防止设备发布消息过多.服务端从MNS队列中获取设 ...

  5. mqtt 发送消息过多_阿里云MQTT服务端注解式消息处理分发与同步调用实践小结

    一.前言 前段时间公司预研了设备app端与服务端的交互方案,出于多方面考量最终选用了阿里云的微服务队列MQTT方案,基于此方案,本人主要实践有: 1. 封装了RocketMQ实现MQTT订阅与发布的实 ...

  6. 阿里云语音服务-交互式语音应答(ivrCall)、语音回执消息的结合使用

    利用阿里云语音服务实现如下 业务场景:电话接听者在接听系统语音后,回复按键1,或者2. 系统接收这个结果(按键1:YES,2:NO),并根据这个结果做其他业务处理. 阿里云语音服务URL https: ...

  7. mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南

    4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能.阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如M ...

  8. 阿里云Kubernetes服务 - Service Broker快速入门指南

    4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能.阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如M ...

  9. Spring Boot集成阿里云视频点播服务的过程记录

    阿里云视频点播 效果预览 视频点播 视频点播概述 功能 优势 流程 环境准备 开通视频点播 创建RAM用户并授权 上传SDK 上传流程 下载上传SDK 安装上传SDK 集成Java上传SDK 异常说明 ...

最新文章

  1. redis4.0.6集群部署(5.0.2版本更新补充)
  2. 关于struts,spring,hibernate的几个问题
  3. 【系统知识点】linux入门基础命令
  4. 解决Android 输入法InputMethodService 显示时让原Activity大小计算错误问题
  5. c# ComboBox禁用鼠标滚轮
  6. 研发管理:该吵架就要吵架
  7. .net mvc身份证验证
  8. 二十年驷之过隙,互联网归来仍是少年
  9. 计算机应用专业招聘试讲内容,广东文艺职业学院2018年第二批合同制人员招聘专业技能考核和试讲题目...
  10. WPF XAML 格式化工具(XAML Styler)使用说明
  11. 基于struts2 拦截器ResultType为chain的Action之间数据传递 ——表单页面打开优化
  12. it行业 平均年龄_IT行业一线员工现状调查报告
  13. android 动态修改dns,如何修改android手机上网DNS
  14. 【Uni-App】点击分享,生成海报带二维码,保存到本地图片,写入文字
  15. CodeChef Graphcnt:Counting on a directed graph(支配树)
  16. Servlet 容器和 Web 服务器的区别
  17. Labview调用EXE形式COM组件
  18. python经典小游戏贪吃蛇_Python开发贪吃蛇小游戏
  19. 手机安装Linux系统(Ubuntu)
  20. 【PMP】燃起图燃尽图分析

热门文章

  1. java中使用pdfBox打印pdf;java web打印pdf;静默打印;jar程序打包成exe文件;exe4j的使用
  2. android架桥游戏,抖音搭桥小能手
  3. 常见电子元件的认识和作用
  4. 在阿里云上用mosquitto搭建MQTT服务器
  5. ISTP(CPCI)会议论文不复杂的几个检索步骤
  6. 程序员找工作的注意事项
  7. TCmalloc学习
  8. FPGA+DSP的高速AD采集处理开发详解
  9. 火车站智能公共广播系统方案
  10. easyui datagrid单独修改某列的值