mq推送数据_什么是消息队列

mq推送数据_什么是消息队列2019独角兽企业重金招聘Python工程师标准>>>…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验

作者:阿里云用户啊里新人


初体验 之 测评环境 

       由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后使用mqs应用到我的程序中在阿里的ecs中运行。

先上一张图这是初体验结果

 142532_4Sga_1464083.png

     

开始正文                    


        本地模式

142539_5JJc_1464083.png

                          

       网络环境

142547_qIMo_1464083.png

 
    阿里云服务器环境

142556_Kjvv_1464083.png     


初体验 之 准备测试

首先就是阅读一下阿里的文档,以及介绍这个事必要的,磨刀不误砍柴工功么!建议大概的通读一下,然后可以将入门指南仔细看一下,里面包含了详细的操作,以及一些demo,包括界面上的操作,和java,Python的。可以让你很快的上手。

 

MQS基本概念 
MQS功能和特点 
MQS安全和可靠性 
MQS限制与局限 
MQS服务访问和地域 
MQS API&SDK 
MQS使用指南 
  
通读之后有几点我提一下 
1,MQS是支持外网访问的,这意味着你即使不是阿里的服务器也可以使用MQS
 
2,MQS的保留时间最长15天
 
3,消息最长64KB
 
4,队列个数和消息个数没有限制(不知道公测之后会怎么计算)
 
5,消息不保证按照生产的先后顺序被消费,(因为是集群的,只是保证优先)
    


 初体验 之 本地基础测试  

用了大概一下午的时间看阿里提供的所有帮助和文档,在脑海里基本有了一个印象,提供一套http的api,并提供几个版本的sdk,我就选择的顺手的java sdk测试了。

 

这里要说的是大家可以在入门指南中看到有示例代码。如果不是细心看完所有的文档,这里可能会让初接触者有些不容易找到sdk和示例代码之间的关系。关于这点稍后再说。

 

测试内容

1,外网消息生产速度

2,外网消息消费速度

3,定时消息延迟情况

4,消息的先后消费情况

测试基于javasdk,直接循环发送10000调消息,求平均时间

最终的测试结果为

发送消息测试10000调

发送时间538639毫秒,不到九分钟,平均18.58条/每秒

获取消息10000调

361956s         约6分钟,平均27.62 条/每秒

获取消息并删除
 

729420s    约12.157 分钟   平均 平均 13.7条

以上数据看来,get消息要比put消息快一些,

以上测试都是单线程测试。

一个生产者,四个消费者,同时开始工作,定时10s
 
另外对定时消息做了一个测试,测试的过程依然是10000调消息,

平均时间在11s接收并消费成功,四个消费者的消费个数也在2500左右,
下面两张是运行最后的截图,(秒级别的消息提醒已经满足我的应用需求,稍后的应用会用到。这里还是比较开心的解决了我的一个一直想做的小功能。)

142612_QpGs_1464083.png

142619_K0fa_1464083.png

本地基本上就做这些测试都是基于外网访问,相信如果放在ecs之后内网访问效率会更高!,然后就准备进入实战阶段了。嵌入我的应用,应用才是王道。
 
                  


 MQS初体验 之 应用实战 

我的应用比较特殊,是个小机器人,提供一些公共服务,比如天气,歌词,成语学习,小游戏。本次的测试想通过mqs的定时消息,实现一些生活中的小提醒功能。
  

 

就拿我本程序猿来说,公司的上班时间是弹性制的,但是每次快到下班的时候总是忘记了具体是什么时候到公司的,要不需要问前台,(不太合适吧?嘿嘿),还有个办法就是看开机时间这个也差不了多少,但是看开始时间还是需要个cmd,或者我的电脑看启动日志,或者任务管理器看,(不过这里我总是觉得不太准)。如果这时候,当我到下班时间直接有个qq消息告诉我可以走了。是不是就爽了很多哈哈

先展示一下目前的实现

142630_2ar3_1464083.png

 由于时间的原因,目前还不成熟,文案也有一点小问题,不过定时消息结合mqs的架构已经基本实现,慢慢把MQS用起来,改进一下,实现我的目标,(我的目标是用我的代码服务的我生活。)
 

 
 

下面说一下实现,我使用的javaSDK版本,其实很简单,如果仔细看就会发现在入门教程中是有demo的,我刚看一些文档的时候还抱怨没有教程,在我看完所有帮助文档说明之类的之后总算是看到了,(这里稍后有话要说)
 

 

首先建议通读一下 入门指南  然后去下载sdk,
 

这里阿里有说明如果是 maven环境很简单,只需要在项目的pom.xml 添加
代码即可。相应的依赖包就可以加载进来,
  

复制代码

142849_G51U_1464083.jpg

我使用的不是maven环境,这里也有全部依赖包的打包下载  传送门  
 

然后解压到项目就可以了,这里我就遇到一个坑,我的源码使用了和mqs的包有重叠,并且版本冲突。我哭了,没办法,只要修改了源码。(不多说都是泪)
 


Java的sdk对队列的操作都做了基本的封装。以下将常用的代码列一下,
 


Mqs 的客户端实例化

很简单只需要提供一个访问地址,以及你己的应用key,secret 
 

复制代码

142858_zFpA_1464083.jpg

首先就是创建一个队列

复制代码

142907_d2Is_1464083.jpg

这里创建队列方法返回的是队列访问地址,例如

http://iveo7.mqs-cn-qingdao.aliyuncs.com/dddddd 
获取消息队列列表

复制代码

142917_HT2W_1464083.jpg

结果

http://iveo7.mqs-cn-qingdao.aliyuncs.com/MyQueue

http://iveo7.mqs-cn-qingdao.aliyuncs.com/dddddd
修改队列属性

复制代码

142926_TAut_1464083.jpg


获取队列属性
 

复制代码

142936_Iw3i_1464083.jpg

 

删除队列
 

复制代码

142945_jfXw_1464083.jpg

 

发送消息
 

复制代码

142952_szkU_1464083.jpg

 

获取消息
 

复制代码

143001_fjkd_1464083.jpg

 

删除消息
 

复制代码

143010_odTs_1464083.jpg

 

查看消息

并不会改变消息的状态,即被 PeekMessage 获取消息后消息仍然处于 Active 状态,仍然可被查看或消费

复制代码

143019_6GEG_1464083.jpg

 

修改消息不可见时间
 

复制代码

143028_rvNa_1464083.jpg

以上代码包括了api的基本操作。
 


 初体验 之 总结

目前我的小机器人已经使用了mqs的消息队列,总而言之,Sdk封装后,接口使用简单,只需要了解了接口的概念,和设一下方法的参数就可以很快的上手。不过建议使用者将先关的文档全部通读一下,也没有多少。
 

另外就是sdk建议对方法加上描述,和参数说明,或者提供一个文档,不然刚入还需要看一下源码,对一些方法只能根据名字猜测。

现在只是应用了mqs的延时消息做定时任务类题型,其实mqs还可以做很多事情 例如

定时消息(延迟服务)

      目前小机器人就是使用的定时消息。

多个应用之间的通信(外网访问,内网多应用)

      之后机器人会实现多渠道通信功能,比如网页发送qq题型消息,或者公告类消息。(已经在计划中

公告类消息推送

      mqs运行一个消息被多次消费,或者说查看。那么就可以作为公告类的消息通道来使用,一条公告被多个消费者查看。(可能会考虑这么干

任务执行类型消息(并且是有优先级的)

       很多应用需要在后台去执行不同的任务,通过MQS可以将任务执行和应用分离,并且按照优先级去执行。让你的应用功能解耦。单独的任务执行功能从
MQS
获取任务,然后去执行。这个记得之前做个一个采集类项目为了突破防采集就是使用这个原理干的,不过那时候还没有
MQS
,使用的是
MQ.

 

目前想到的使用场景,也许大家有更多的使用方式和场景,快来试试吧


初体验 之 建议&意见

1,文档有些乱,比如入门指南,和sdk没有很好的说明关联,最一开始都不知道入门指南里面的代码是sdk的。
 
 

--建议已记录

2,sdk的方法都没有说明,只能是根据入门指南的一些代码查看,另外看到sdk其实还提供一些别的方法,但是没有说明,只能去看源码了。
 

-- 主要是有Api Reference文档


3,mqs控制台的消息和api的消息是不通的,我在控制台添加的消息在api获取到是乱码,在通过api添加的消息在控制台看到的也是加密之后的。这点不知道是什么原因,还望阿里工程狮看看。如果这里不互通,感觉页面上添加消息接口也没有什么意义。

--建议已记录

143042_to4M_1464083.png

143043_6N05_1464083.png

最后,特大字号告诉坚持读到这的你一个秘密,原来sdk的jar解压之后竟然有源码。。。。悲催的我自己弄了半天,原来有源码。。。。

 

原文地址:http://bbs.aliyun.com/read/179171.html   

微博互动:http://weibo.com/1644971875/BrFjWoX3I?ref=#_rnd1413352813344 

参加活动:http://promotion.aliyun.com/act/aliyun/freebeta/ 

143054_rxLG_1464083.jpg

转载于:https://my.oschina.net/u/1464083/blog/331781

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214284.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • httprunner(9)运行测试用例的方式总结「建议收藏」

    httprunner(9)运行测试用例的方式总结「建议收藏」前言用过pytest的小伙伴都知道,pytest的运行方式是非常丰富的,可以说是你想怎么运行怎么运行,想运行哪些运行哪些,那httprunner是否同样可以呢?运行用例的各种方式运行指定路径的用

    2022年7月29日
    5
  • 很黄色的JAVA游戏_《yellow》很黄!很暴力?居然有这么黄的游戏!

    很黄色的JAVA游戏_《yellow》很黄!很暴力?居然有这么黄的游戏!原标题:《yellow》很黄!很暴力?居然有这么黄的游戏!《yellow》是一款很“黄”但是一点也不暴力的解密益智类游戏,游戏一共有50关,每一关都非常非常的黄,不适宜长时间玩耍~游戏虽好玩但是要适度哦~游戏的特色就是黄,一打开游戏游戏的界面就和游戏的名字一样,玩家要通过自己的脑洞来进行通关,通关的方法也和游戏的名字一样,只要让游戏界面全部变黄了就能通关了,游戏的解密相对其他解密游戏简直亲切,…

    2022年10月15日
    0
  • Unix与Linux的历史

    Unix与Linux的历史

    2021年9月13日
    50
  • pycharm使用gpu运行_降低python程序cpu占用高

    pycharm使用gpu运行_降低python程序cpu占用高本人频繁在pycharm下run程序,经常终止,可能其后台运行的Python程序没有关闭,所以耗尽GPU资源。现象是占用GPU的进场ID为空,即nvidia-smi后,没有进程使用GPU,但每块GPU的内存确被使用很多。。。。。fuser-v/dev/nvidia*会发现很多Python在运行,故粗暴地kill这些进程ID就可以了。。。。。。。ID乍一看很多,杀死一两个就不剩几个了。。。。本方…

    2022年8月29日
    2
  • Gradle教程和指南 – 创建Gradle构建

    Gradle教程和指南 – 创建Gradle构建原文地址:CreatingNewGradleBuilds遵循本指南,你将创建一个Gradle项目,调用一些基本的Gradle命令,并了解Gradle如何管理项目。需要什么大约11分钟终端或者IDE应用程序JDK1.7及以上Gradle4.6及以上Shell命令将基于Unix的系统使用。在Windows中,每个命令都有类似的命令。初始化项…

    2022年6月28日
    30
  • Ajax 请求的五大步骤

    Ajax 请求的五大步骤什么是AjaxAjax:即异步JavaScript和XML,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新,而传统不使用Ajax的网页,如果需要更新内容,必需重载整个网页面。Ajax的工作原理Ajax的工作原理相当关于在用户和服务器之间加了一个中间层(Ajax引擎),使用户操作与服务器响应异步化,并不是所有的用户请求都提交给服务器。像一些数据验证和数据

    2022年5月17日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号