消息服务 MNS 之初见
消息服务 MNS
说到消息服务 MNS,那么消息服务 MNS 是什么呢?为什么会有消息服务 MNS 这款产品的产生呢?
什么是消息服务 MNS
消息服务-阿里云消息服务 MNS(Message Service)是一种高效、可靠、安全、便捷和可弹性扩展的分布式消息服务。消息服务 MNS 能够帮助开发者在应用的分布式组件之间自由地传递数据、通知消息,从而构建松耦合系统。消息服务 MNS 支持队列模型和主题模型。
消息服务 MNS 产生
简单来说就是说传统的单体系统架构、单体数据库已经无法满足海量的用户需求,这个时候就需要对原有系统进行升级改造,对大规模的流量进行分解到不同的应用服务中,各个应用服务之间通过消息服务的方式来实现数据传递、通知消息,从而达到松耦合的目的。
消息服务 MNS 的模型
队列模型和主题模型,其中对列模型就是和我们经常听到的消息队列中间件 Kafka、RocketMQ、ActiveMQ、RabbitMQ 的基本原理相似,生产者发送消息到队列中,消费者去队列中取出消息进行消费,消息消费完成之后从队列中删除,关于消息服务 MNS 队列模型的更多术语可以参考文档 https://help.aliyun.com/document_detail/34954.html;那么主题模型呢?主题模型就是说比队列模型多了一步,就是在生产者发送消息之前需要先有主题,然后生产者往主题发布消息,消息消费者需要先订阅主题,之后才能从从主题接收消息消费消息。
消息服务 MNS 基本操作
控制台地址: https://home.console.aliyun.com/home/dashboard/ProductAndService,打开控制台,搜索消息服务 MNS
免费开通【消息服务 MNS】
注意:这里消息服务 MNS 默认是按量收费。如果使用量较大的建议选择合适的套餐开通。
队列模型基本操作
创建队列
点击【队列列表】,选择【创建队列】,打开如图页面
参数说明:
名称:队列名称。
消息最大长度:发送到队列的消息体的最大长度。
长轮询时间:当队列中没有消息时,该队列的 ReceiveMessage 请求的最大等待时长。
消息可见性超时时间:消息从队列中取出后从 Active 状态变成 Inactive 状态后的持续时间。
消息保存时长:消息在队列中的最长存活时间。从发送到队列开始经过此参数指定的时间后,不论消息是否被取出都将被删除。
消息定时时间:发送到队列的所有消息将延后此参数指定的时间后被消费。
启用日志功能:是否开启日志管理功能。
这里是测试用,参数无需特别设置,默认的即可,点击【确定】。
收发消息
点击【消息队列】列表右侧【更多】,选择【收发消息】
输入消息内容,点击【发送消息】,消息发送成功后会收到返回的消息 id,同时刷新页面会看到可用消息变为 1
点击【接收消息】,会看到刚才的消息被消费,同时可用消息为 0
当然,如果你想删除当前队列,可以直接返回列表页选择【更多】-【删除】即可。
主题模型基本操作
主题模型比队列模型多了一步主题的操作,当然也是需要先有消息队列的
创建队列
创建队列的操作和上面一样,这里创建 topic01 的队列,参数选择默认参数,
这里是个人测试,可以不用开启日志服务,毕竟日志服务也是收费的。
创建主题
点击【主题列表】-【创建主题】,输入主题名称确认。
主题创建完成之后会自动跳转的主题详情页
创建订阅
点击【创建订阅】,输入对应内容,点击【确定】
参数说明:
名称:订阅名称。
推送类型:订阅的推送类型。默认为队列。
接收端地址:推送类型的接收端地址。
可选:消息过滤标签:通过设置的标签对消息进行过滤。
重试策略:向接收端推送消息出现错误时的重试策略。重试策略支持选择以下任一类型:
退避重试
指数衰减重试
消息推送格式:设置推送消息到接收端的消息格式。消息推送格式可以选择以下任一类型:
SIMPLIFIED
JSON
XML
这里的接受端地址不是普通的地址,不是说你把公司的应用地址拿来就可以正常接入消息服务 MNS,而是需要满足一定的条件,同时需要与你的消息服务 MNS 同地域。
接收端地址:Endpoint 消息服务 MNS 的访问域名地址,格式如下:
http://$AccountId.mns.$Region.aliyuncs.com
mns..aliyuncs.com
:Region
是消息服务 MNS 服务部署的地域,您可以根据应用需要选择不同的地域。AccountId
:队列所有者的账号 ID,调用 API 请求时需替换成实际的账号 ID。
关于订阅的另外
由于我们是测试用的,在主题模型开始之初也创建了用于接收消息的队列,所有这里在创建订阅时需要选择【队列】,同时接收端地址是队列名称【topic01】
发布消息
回到主题列表页,点击【发布消息】
接收消息
回到创建的队列列表点击【收发消息】-【接收消息】,可以看到
如此关于消息服务的队列模型和主题模型的基本操作便完成了,文档整体说明比较详细,参数以及后台设置都讲解的比较到位,赞一个
JAVA 项目接入
这里官方文档有详细的代码示例和接入操作智囊:https://help.aliyun.com/document_detail/27508.html,整体接入比较简单,可以直接引入 pom 即可,这里需要在不同系统对应位置创建配置文件.aliyun-mns.properties
配置文件中的 AccessKeyId 和 AccessKeySecret 可以通过控制台配置,方便管理,控制台地址:https://ram.console.aliyun.com/manage/ak,点击【创建】,验证身份之后就可以创建 AccessKeyId 和 AccessKeySecret
创建完成之后配置完对应的文件之后,可以直接参考 API 文档进行业务开发,整体文档比较详细,示例代码也很明白,接入很丝滑。
总结
整体使用消息服务 MNS 下来,通过控制台操作 MNS 比较容易上手,除了在操作时需要知道具体参数的意义才有必要去查看文档时,其他从创建队列,收发消息、删除等都简单容易上手,新手可以直接参考文档就能全程操作下来不卡顿,当然如果有卡顿的可以参考我这篇文章的哈,本人亲测没毛病...
对于刚接触消息服务 MNS 的同学们,个人觉得不必担心学习成本高的问题,参考文档操作 10 分钟足够掌握通过控制台操作消息服务 MNS 的全部操作,当然,在实际接入应用过程中可能会遇到各种各样的问题,同样也不用担心,首先可以去文档中查找,觉得浪费时间的话也可以直接提工单,作为阿里系的产品,每一款产品背后都有一个强大的技术团队支撑,只要业务需要,可以放心接入阿里云消息服务 MNS,关于消息服务中消息数据的安全性,可靠性,可以完全交给阿里云消息服务去处理,作为业务方,专注业务即可,专注业务即可,专注业务即可。
版权声明: 本文为 InfoQ 作者【六月的雨在InfoQ】的原创文章。
原文链接:【http://xie.infoq.cn/article/27c53030596a2302989ca645c】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论