手把手系列:消息队列 MNS 实操讲|学习笔记

简介: 快速学习手把手系列:消息队列 MNS 实操讲

开发者学堂课程消息队列 MNS (RocketMQ 轻量版)入门课程手把手系列:消息队列 MNS 实操讲学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1236/detail/18411


手把手系列:消息队列 mns 实操讲解

 

内容介绍:

一、产品概述

二、模型

三、使用方式

 

一、产品概述

大家好,欢迎收看本次的一个实战课程,本次主要为大家去介绍mns的操作,还有包括它的相关演示,首先可以先去看一下mns到底是什么,以及它的主流的一些概念是什么,然后可以更方便的去理解和包括使用这款产品,在前面几个课程中也了解到,他其实是一个类似于的分布式的一个相应队列,它其实是有两个模型去组成的。

image.png


二、模型

第一个模型叫队列模型,叫做q第二个模型其实是我们的主题模型,叫做topic,所以说mns它主要的使用方式还有包括特性,其实也就是围绕这两个模型去展开。

image.png

那第一个就是比较经典的一个类似于1V1的消费,包括发送生产的一个模型,一端是生产者,另一端是消费者,然后每一条记录,只能被唯一的消费者所去做消费,就比方说我去发一个message等于12345,发下去,那就意味着下游端只有一个消费者可以接受到message等于12345的这条消息,这就是我们的简单队列模型,它是一个精简的1:1的一个模型。

image.png

第二个模型叫做topic主题模型,它其实是一个类似于广播的一个模式,可以直接把的message到一个topic上面,然后通过去转发到各个q,然后再通过各个q来去做消费,其实是一个比较经典的类似于发布订阅的一个模型,一端是发送端,另一端是订阅端,订阅端可以选择订阅,也可以选择不订阅,它其实是一个类似于推送或者是类似于pose一个逻辑。以上就是简单对mns的结构的介绍,概述各类是简单的一些类似阐述。

 

三、使用方式

下面来介绍控制台的一个使用方式以及mns控台的一些类似于使用的一些小技巧,还有包括它一些功能点,首先打开浏览器,然后找到阿里云的一个类似控制台,选择登陆,然后找到mns这款产品,然后去创建队列,比方说选test 123,点确定,那这样的一个队列的能力就创建完成了,现在这里其实只有对于刚刚去讲的1:1的一个模型,控制台有一些监控,比方说可用消息,包括定时消息,其实都是有展示的,以及现在的一个地址以及它的类似于一些类似监控告警的演示,都会有一些比较详细的一些展示,类似于快速收发的一个能力,比方说去写123,点发送,那其实是已经就把这条消息发送到了消息队列里面,然后点击接收,就可以接收到刚刚所发送的一个消息,就是message 123,这是简单的一个在控制台侧的手法体验,它其实是一个类似1:1的模型,从a端到b端的一个类似于传统的比较直接的模型,创建msq,同时在这里也可以删掉,以上就是msq的一个类似于我们的操作控台。

第二个,类似于去写topic 30创建,已经创建完了一个topic,topic可能其实是需要订阅的,可以在里面去创建一个订阅者,点确定,那就可以直接为了演示方便,去建两个队列,可以在订阅处创建一个订阅,队列名称写123,那再去创建一个队列名称,刚刚是123,那现在是321,点击确定。那其实是完成了两个订阅段,然后再发送一个叫做message Test 123的队列发布,可以看到已经提示消息是发成功的,就可以进到队列里面去看,他现在有的一些消息,搜一下,接收一下这条消息,看到这就是刚刚所发送的message test 123的一个消息。那同时再看一下321,在上面写的是可用消息,接受一下这个321也是,也是刚刚所发送的message test 123,那同时可用消息就会变成零,所以说这个case其实是告诉大家,逃避模型它其实是有那种类似于分发或者叫做略有的一个逻辑,它还可以把一条小企去路由到各个订阅者里面,这个就是现在的一个模型的一个主要的功能,还有包括它的特性。

那么接下来就可以看一下现在的一些练习sdk,怎么用sdk,会有什么配置项,还有包括一些功能,那首先给大家介绍一下现在mns的一些类似sdk的一些相关的一些资源,因为现在其实也主流支持了很多sdk,包括JAVA,Python,其实也是支持很多sdk,然后这里的话,主要还是演示一下用诺基s,去给大家去演示一下sdk的一些使用,同样,其实也是可以去直接调接口,就比方假如说qe的一个接口,然后去执行这些操作,也是可行的。

那现在就给大家去演示一下怎么去玩转 sdk,在仓库里面,直接在阿里云的仓库里面找到sdk的架包,然后直接安装,去演示一下。这里是一个之前做好的一个事例,然后就在这里演示,首先可以去直接把他的一个模块,下载到本地,这里提示已经下载过了,下完之后,它会生成一个模块,然后直接在里面去新建一个index ,他这里代码其实有几行,比较关键一点,这里讲解介绍一下第一行是什么,第一行是叫做basic,然后去声明一下,要去调s的这个架包,因为它其实是在阿里云的,可以直接映射,其次我们要声明一下台是什么,这一段其实就是声明修改成自己的。

第二块呢就是可能要去申请一下信息,其实就是现在的焦点的信息,焦点信息在这里有展示,就是每个创建队列的时候,其实都会有一个叫做点point,它其实就几部分构成,第一部分是ID。第二部分是类似于region的一些信息,比方说青岛,这样可能会也可以更直观一点,那这里其实就是现在的iPod的一个id,还有一个类似于我们到cn的一个后缀,那这两块的话,还有包括账号,账号是比较好拿到的,然后第二块的话就是可以直接在阿里控制台,会有一个类似于你来创建,还有包括访问的一个流程,就可以直接在这里去创建一个t,当然他会去验证现有的账号密码了,还有包括其他一些东西,然后就会生成一个在34k的一个value和包括的key值。这样可以直接在这里去填写出来,具体的一些情况其实就是现在主要的一些填写,这里有地址,已经告诉大家了,那就不去做演示,确实是非常简单的。这里其实是可以声明一个类似于client的一个客户端,然后就可以去调client的这样的一个类sdk。然后就是操作,就比方说这段代码,去创建了一个q,然后名称是q2,第二块呢就是现在可以去list一下q,q的值是多少,然后用jason去返回,第三段其实就是去一个我们的topic。第四段就是要去拿一下类似于就是信息以及要去推送到有一些类似于message,这样的话其实就可以完成,这块其实就是一个非常简单的,有一个cleaner的一个模型,假如大家感兴趣的话,可以在后面一节我们会有一个简单的一个实操课。

image.png

 ex.js 2 () package.json

dex.js> ] client> accessKeyld

const MNSClient = require('@alicloud/mns');

const accountid ='182572xxxxx5';// 需要修改为自己的 AccountID

var client = new MNSClient(accountid, 《

region:‘cn-hangzhou',// 需要修改为指定region

accessKeyId:'LTAI5txxxx.//需要修改为AccountID对应的accessKeyId

accessKeySecret:‘UyHbwZL8ir6c5I4yhxxxxc',//需要修改为AccountID对应的accessKi// optional & default

secure:false, // use htt or http

internal: false, // use internal endpoint

lvpc:false // use vpc endpoint

(async function ()(

let res;

// create queue

res = await client.createQueue('test-queue2');

console.log(res);

// list queue

res = await client.listQueue();

console.log(JSON.stringify(res, null, 2));

// createtopic

res = await client.createTopic('test-topic');

console.log(res);

// get topic attributes

res awaitclient.getTopicAttributes('test-topic

LEMS 2 OUTPUT DEBUG CONSOLE TERMINAL JUPYTER zsh

engecanmeng-ali-worker test  npm install @alicloud/mns -save

o date, audited 12 packages in 2s

10vulnerabilities

eng@canmeng-ali-worker test %1s

K.1s node modules package-lock.json package.json

engecanmeng-ali-worker test l

用的效果是怎样的那其实现在就可以去跑一下,就比方说现在已经是装了那个环境,就比方说现在就可以直接跑一个类似于点击s我们就可以发现它其实是有返回结果的,第一个结果是什么第一个结果其实就是我们的create,create之后就是就是在我们这段代码,就是我们create的一个逻辑create之后它会返回,我创建了一个类似于test,然后这个test的名称,location,然后他的地址在哪里这个其实就是我们现在的一个返回值然后第二个东西请求什么呢我其实是请求一个q,然后q就会返回我现有的所有的body里面的一些q的内容,比方说可能有几个q,第一个q是我们的test,第二个q是什么test,第3q是什么test这是刚刚去创建的q3s等等一系列

JS index.js 2 l) package.json

JS index.is cfunction>

19 console.log(res);

20 // list queue

21 res = avait client.listQueue();

22 console.log(JSON.stringify(res, null, 2));

23 // create topic

24 res = await client.createTopic('test-topic');

25 console.loo(res):

PROBLEMS2 OUTPUT DEBUG CONSOLE TERMINAL JUPYTER zsh

up to date, audited 12 packages in 2s

found0 vulnerabilities

canmeng@canmeng-ali-worker-test s 1s

index.is node modules package-lock.json package.json

canmeng@canmeng-ali-worker test node index.js

code:204,

headers:

.c-hangzhou.al1yuncs.com/queues/test-queue2body:undefined

“code":200

"headers";

"body":[

"QueueName":"canmengtest",

“DelaySeconds": “65536"

“MaximumMessageSize":

"MessageRetentionPeriod":“345600"

“VisibilityTimeout":“30”

“CreateTime":“1648559194"

“LastModifyTime":"1648559194"

“PollingWaitSeconds";

“ActiveMessages":

“InactiveMessages":

“DelayMessages":

“QueueURL": "http://1825725063814405.mns.cn-hangzhou.aliyuncs.com/queues/canmengtest"“LoggingEnabled":"False"

"QueueName":"test"

"DelaySeconds":“0"

“MaximumMessageSize"“65536"

“MessageRetentionPeriod":“345600"

"VisibilityTimeout":"30"

"CreateTime":"1658149431"

这只是我们现在所有的的一个列表list出来,然后第三段其实创建了一个topic ,之后这块的返回值就是已经告诉你,已经创建完了,它的患者其实就是test,然后一个topic就是我们之前list的,然后第三段要去get一个信息,他也会出来,里面message的一个情况是什么,以及他的最大水平,最大水位以及我的创建时间等等一些信息,这块其实就是sdk去做的,然后第四个其实它会有一个报错,然后它的报错是什么,其实是没有找到topic name的一个message,所以说它是这块是失败的,这块失败原因是因为我们现在这块儿可能会去返回一个类似于失败者,所以说这里其实就是我们刚刚在控制台去演示了一个创建订阅的一个逻辑在那。

那现在的其实就是我们这些已经把我们现在的mns的sdk,确实是稍微去捋了一遍,我们大概也知道他mns的具体的流程是怎样,但是我这块是移动的mns,然后其实比方说其他语言,比方说我们的python,其实也是也是一个道理,给大家再去简单介绍一下我们python的sdk,就比方说用JAVA,但是JAVA可能现在是没有本地环境,所以说这块可能演示起来会比较烦一点,这块Python sdk其实也非常简单,sdk的话,我们直接用s code打开一下。

image.png

这也特别简单,会发现有几个点,第一个点是它的sample,就是create q的一些逻辑,第二个就是我们现在的一些mns的一些包,这种sdk的包,它里面可能会有一些类似于逻辑分装这块其实是个类似sample,这类的话,我们其实可以直接把一些地址给填进去,比方说这套配可以展开,比方说可以直接把我们的ask的一些信息给填进去,填进去之后,它这里也是比较简单的,就比方说我要去publish一下,那这里可以直接去叫sample的一个接口,比方说我要运行发送,那就直接是Python,然后send message Python,比方说我这款就我掏一个名称,然后点个发送,它其实就可以发送了,这里其实会报错,是因为我们其实现在的类似于account一些数组,这些数据其实没有填,因为时间关系我这就不再填了,然后大家可以直接去看一下,我们现在其实使用了,包括我们的创建资源,其实都是非常清楚

那其实就是我们这一讲的一些内容,就是我们现在的一个控制台以及我们sdk工具的一个使用,这节课程那我们就先讲到这里,下面的话会有一个比较精彩的一个实践课,然后想进去告诉大家mns怎么去分装怎么去用以及怎么去调用以及怎么去接收我们的消息

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
25天前
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
65 7
|
19天前
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
23天前
|
消息中间件
解决方案 | 云消息队列RabbitMQ实践获奖名单公布!
云消息队列RabbitMQ实践获奖名单公布!
|
1月前
|
消息中间件 安全 Java
云消息队列RabbitMQ实践解决方案评测
一文带你详细了解云消息队列RabbitMQ实践的解决方案优与劣
65 6
|
30天前
|
消息中间件 存储 弹性计算
云消息队列RabbitMQ实践
云消息队列RabbitMQ实践
|
1月前
|
消息中间件 存储 监控
解决方案 | 云消息队列RabbitMQ实践
在实际业务中,网站因消息堆积和高流量脉冲导致系统故障。为解决这些问题,云消息队列 RabbitMQ 版提供高性能的消息处理和海量消息堆积能力,确保系统在流量高峰时仍能稳定运行。迁移前需进行技术能力和成本效益评估,包括功能、性能、限制值及费用等方面。迁移步骤包括元数据迁移、创建用户、网络打通和数据迁移。
64 4
|
2月前
|
消息中间件 弹性计算 运维
阿里云云消息队列RabbitMQ实践解决方案评测报告
阿里云云消息队列RabbitMQ实践解决方案评测报告
73 9
|
2月前
|
消息中间件 监控 数据处理
解决方案 | 云消息队列RabbitMQ实践
解决方案 | 云消息队列RabbitMQ实践
52 1
|
2月前
|
消息中间件 弹性计算 运维
云消息队列RabbitMQ实践
本评测报告详细分析了阿里云云消息队列 RabbitMQ 版的实践原理、部署体验及核心优势。报告认为其在解决消息积压、脑裂难题及弹性伸缩方面表现优秀,但建议进一步细化架构优化策略和技术细节描述。部署文档详尽,对初学者友好,但仍需加强网络配置和版本兼容性说明。实际部署展示了其高可用性和成本优化能力,适用于高并发消息处理和分布式系统数据同步。为进一步提升方案,建议增加安全性配置指导、性能调优建议及监控告警系统设置。
|
1月前
|
消息中间件 监控 测试技术
云消息队列RabbitMQ实践 - 评测
根据反馈,对本解决方案的实践原理已有一定理解,描述整体清晰但需在消息队列配置与使用上增加更多示例和说明以助理解。部署体验中获得了一定的引导和文档支持,尽管文档仍有待完善;期间出现的配置文件错误及依赖库缺失等问题已通过查阅资料解决。设计验证展示了云消息队列RabbitMQ的核心优势,包括高可用性和灵活性,未来可通过增加自动化测试来提高系统稳定性。实践后,用户对方案解决问题的能力及适用场景有了明确认识,认为其具有实际生产价值,不过仍需在性能优化、安全性增强及监控功能上进行改进以适应高并发和大数据量环境。
42 0

相关产品

  • 轻量消息队列(原 MNS)
  • 云消息队列 MQ