基于Jmeter实现Rocketmq消息发送
在互联网企业技术架构中,MQ占据了越来越重要的地位。系统解耦、异步通信、削峰填谷、数据顺序保证等场景中,到处都能看到MQ的身影。而测试工程师在工作中,也经常需要和mq打交道,比如构造测试数据,触发某些业务场景,以及针对mq的性能测试等。
目前业界中比较知名的mq产品有kafka、rabbitmq、rocketmq等。今天我主要来介绍下如何使用Jmeter来向rocketmq发送消息,实现对mq发消息功能的性能测试。
先来简单介绍下Rocketmq
RocketMQ 是一款分布式、队列模型的消息中间件,是阿里巴巴集团自主研发的专业消息中间件,历经多次天猫双十一海量消息考验。目前已经捐赠给Apache基金会,并于2016年11月成为Apache 孵化项目。
01、MQ基本概念
-
Message:消息,消息队列中信息传递的载体
-
Topic:消息主题,一级消息类型,通过 Topic 对消息进行分类
-
Tag:消息标签,二级消息类型,用来进一步区分某个 Topic 下的消息分类
-
Producer:消息生产者,也称为消息发布者,负责生产并发送消息
-
Consumer:消息消费者,也称为消息订阅者,负责接收并消费消息
02、RocketMQ 的 4 个组件
分别是 nameserver、broker、producer 和 consumer
-
Broker:集群最核心模块,主要负责 Topic 消息存储、消费者的消费位点管理(消费进度)
-
Producer: 消息生产者,每个生产者都有一个 ID(编号)
-
nameserver:存储当前集群所有 Brokers 信息、Topic 跟 Broker 的对应关系
-
Consumer:消息消费者,每个订阅者也有一个 ID(编号)
03、MQ消息收发模型
理解上面几个概念后,我们来编写Jmeter脚本。
在idea中创建一个Java工程,并引入Rocketmq和Jmeter的依赖包,先编写一个demo脚本。Rocketmq的消息发送代码非常的简单,几行代码轻松搞定,代码如下:
运行脚本,可以看到打印的结果“SEND_OK”字样,代表消息发送成功。
登录到rocketmq控制台页面,可以搜索到刚才发送的消息。
到目前为止,测试脚本已经调试通过,只需要将脚本转换为Jmeter的脚本即可。具体分为以下几步:
1、 创建一个测试类,实现Jmeter的JavaSamplerClient接口,需要实现接口中的4个方法,分别为:
-
setupTest:脚本的初始化操作,每个线程启动时执行,且仅执行一次
-
runTest:Jmeter线程循环执行的方法
-
teardownTest:Jmeter结束方法,每个线程结束时执行,且仅执行一次
-
getDefaultParameters:需要暴露在Jmeter界面中的参数,本文中暂时不需要
根据四个方法的特点,将对应的mq代码操作放到不同方法中,详细解释可见注释代码如下:
2、 将Java脚本及其依赖包导出为jar包,然后放到jmeter的lib/ext目录下
3、 打开Jmeter,新建“Java请求”,选择刚才的写的脚本类
4、 在查看结果树中查看执行结果,可以看到“SEND_OK”等字样,代表发送消息成功了。
就这样,一个基于Jmeter的发送MQ消息脚本就完成了,如果想做压测的话,在Jmeter里配置上线程数和持续时间就可以开始压测了。
如果你还有许多困惑,那么我整理的视频资源和文档会是你的良师益友,或许可以给你带来一些实际性的帮助与突破【保证100%免费】
相关文章
- PHP和MySQL实现消息队列
- 分布式消息系统高危漏洞攻防术
- c#中怎么截获按钮消息的几种方法实例验证
- MFC 自定义消息四步曲与在参数中传递变量
- 【Push Kit】模拟服务端发送消息至客户端,测试消息发送功能(华为推送服务)
- 快速集成华为 AGConnect 应用内消息服务 - Android
- SwiftUI 基于消息实现多界面更新Notification
- ROS中订阅和发布视频中的图像消息
- 力扣解法汇总2325. 解密消息
- iOS消息推送机制的实现
- iOS消息推送机制的实现
- springboot+rocketmq(4):实现延时消息
- springboot+rocketmq(2):实现顺序消息的发送与消费
- java 实现微信小程序订阅消息
- python实现QQ自动发送消息
- Python 基础 之 网络 socket 使用 tcp (SOCK_STREAM)实现简单的客户端、服务端(消息发送和接收)
- Python 基础 之 网络 socket 使用 udp (SOCK_DGRAM)简单介绍、并实现简单的消息发送和接收
- xmpp和OpenFire示例,即时聊天室,支持离线消息
- ESP8266 reset_reason: RTC reset 2 wakeup 0 store 0, reason is 2 后无消息错误
- 微服务实践分享(6)消息中心
- Delphi中window消息截获的实现方式(1)