- 环境准备
- 安装jmeter安装包
- 下载jmeter
链接:Apache JMeter - Download Apache JMeter
- 解压jmeter压缩包
apache-jmeter-5.5.zip
- JMeter环境变量配置
- 找到 此电脑右键-【属性】-【高级系统设置】-【环境变量】
- 新建系统变量 JMETER_HOME
变量名:JMETER_HOME
变量值:jmeter的安装路径。例如:D:\下载的软件\Jmeter\apache-jmeter-5.5
- 编辑变量名 Path
新增环境变量:
%JMETER_HOME%\bin
- 安装jdk
- 下载地址
https://www.oracle.com/java/technologies/downloads/#jdk18-windows
- 解压安装jdk压缩包
- 新建一个文件夹用于安装jdk,新建的文件夹名字最好是全英文;否则安装过程中可能会出现安装失败的情况
- 按照安装向导一步步往下走
- Jdk环境变量配置
- 找到 此电脑右键-【属性】-【高级系统设置】-【环境变量】
- 新建系统变量 JAVA_HOME
变量名:JAVA_HOME
变量值:jdk的安装路径。例如:D:\Tools\JDK
- 新建系统变量 CLASSPATH
变量名:CLASSPATH
变量值:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;
- 编辑变量名 Path
新增环境变量:
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
- 检验是否配置成功
打开命令提示符,输入 java -version
展示以下内容即为配置成功
- 安装AMQP插件
- 下载地址
GitHub - jlavallee/JMeter-Rabbit-AMQP: A JMeter plugin to publish & consume messages from RabbitMQ or any AMQP message broker
- 解压AMQP插件
- 电脑安装apache-ant
- 下载地址
https://dlcdn.apache.org//ant/binaries/apache-ant-1.9.16-bin.zip
- 解压apache-ant安装包
- apache-ant配置环境变量
- 下载 RabbitMQ客户端插件amqp-client-3.4.4.jar
- 下载地址
https://repo1.maven.org/maven2/com/rabbitmq/amqp-client/3.4.4/amqp-client-3.4.4.jar
- 修改配置文件
- 修改AMQP插件源码里的build.xml,http改成https
- 修改build.xml里面ivy.install.version,2.3.0改成2.5.0
- 打包生成JMeterAMQP.jar
直接在AMQP插件所在目录,执行ant命令即可
- 插件复制插件到jmeter目录
- 把上面下载的amqp-client-3.4.4.jar复制到jmeter安装目录的lib\ext目录下
- 把AMQP插件源码目录下target\dist目录下的JMeterAMQP.jar也复制到lib\ext目录下
- 启动jmeter的时候就出现rabbitmq测试的取样器
- jmeter对rabbitmq进行性能测试
- 新建线程组
- 新建AMQP Publisher
- 新建AMQP Consumer
- 启动查看结果树
- 启动聚合报告
- 查看rabbitmq控制台
- 脚本文件
将下述文件的内容保存到一个rabbitmq.jmx,打开后修改rabbitmq的主机配置以及账号密码
false true stoptest false 1 2 10 false 10 true hostname port username password queuename 1.1.2.2 3xxx defauweR0 8gG558p1_H-Jz9L zytest-1 false true 1 zyjmeterExchange true true false zytest-1 zytest-1 / direct true false false false 5000 1 10.10.21.29 3214 default_user_fZzFDUx3r-0As9gFfOl 4hYbpm_if3KK0RuMV42tTrfSoYZOvL5U false false false zytest-1 hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.hello,rabbitmq.helo text/plain zyjmeterExchange true true false zytest-1 zytest-1 / direct true false false false 1000 100 ${hostname} ${port} ${username} ${password} false true 0 false true false false saveConfig true true true truetrue true true false truetrue false false false true false false false true 0true true true true true true false saveConfig true true true truetrue true true false truetrue false false false true false false false true 0true true true true true true - 参数说明
- AMQP Publisher参数说明
- 采样器的名称和备注。这是JMeter所有采样器的属性,用来进行线程组的采样管理。建议取有意义的名字。
- 交换机信息。如果需要发送的MQ消息是以交换机的方式进行消息传递,需要配置。如果不需要则配置“Exchange”属性为空即可。具体的属性含义如下。
Exchange:交换机名称,默认为jmeterExchange。RabbitMQ消息传递通过交换机或队列模型进行,需要根据实际系统定义情况进行配置。
Exchange Type:交换机类型,规定了消息的路由策略,根据实际的消息交换机类型进行配置,可选为direct,topic,headers,fanout。
Durable?:交换机的持久化属性。持久化队列和非持久化队列的区别是,持久化队列会被保存在磁盘中,固定并持久的存储,当服务重启后,该队列会保持原来的状态在RabbitMQ中被管理,而非持久化队列不会被保存在磁盘中,服务重启后队列就会消失。
Auto Delete?:交换机的自动删除属性。如果该交换机没有任何订阅的消费者的话,该交换机会被自动删除。这种队列适用于临时队列。
Redeclare?:该交换机是否可以重新声明。当声明的交换机Durable?或者Auto Delete?与已经存在交换机不一致,会出现类似如下错误:
Caused by:com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method
(reply-code=406,reply-text=PRECONDITION_FAILED - inequivalent arg 'durable' for exchange'jmeterExchange' in vhost '/': received 'false' butcurrent is 'true', class-id=40, method-id=10) 所以AMQP插件增加了重新声明属性,当交换机声明与已经存在的不一致时,如果勾选了可重新声明,会将原交换机删除,重新定义一个新的。
3、队列信息。如果需要发送的MQ消息是以队列的方式进行消息传递,需要配置。如果不需要则配置“Queue”属性为空即可。具体的属性含义如下。
Queue:队列名称,默认为jmeterQueue。
Routing Key:队列的路由关键字,通过路由关键字的设定,可以完成多个消息统一处理的需求。对于队列的方式,需要与队列名称一致。
Durable?、Auto Delete?、Redeclare?属性的作用与交换机类似。
Exclusive?:队列的排他性属性。如果想创建一个只有自己可见的队列,即不允许其它用户访问,可以将一个Queue声明成为排他性的(Exclusive Queue)。
Message TTL:Time-To-Live,消息过期时间,单位为毫秒。
Expires:队列的超期时间,单位为毫秒。该值必须为正数(与消息 TTL 不同,该值不可以为 0),所以如果该参数设置为 1000 ,则表示该队列如果在 1 秒钟之内未被使用则会被删除。
4、RabbitMQ服务信息。RabbitMQ服务的连接信息。具体包括如下属性。
Virtual HOST:使用的RabbitMQ服务虚拟主机信息。通过虚拟主机可以在服务器上划分多个虚拟空间,起到消息隔离的作用,默认为根目录“/”。
Host:RabbitMQ服务所在主机IP或名称,使用名称时需要保证DNS正确性。
Port:RabbitMQ服务所在端口,默认为5672。
Username:使用RabbitMQ服务的用户名。
Password:使用RabbitMQ服务的密码。
Timeout:连接RabbitMQ服务的超时时间,单位为毫秒。
1、发送消息条数。Number ofsamples to Aggregate表示AMQP采样器工作一次发送几条消息。
2、消息属性。具体包括如下信息。
Persistent?:消息的持久化属性。设置了持久化的消息,即使当时Consumer没有在监听,等Consumer启动后也能够收到该消息。反之,如果当时Consumer没有监听,则无法获取消息。
Use Transactions?:是否将发送消息通道设置为事务模式。事务能够解决Publisher与消息服务之间消息确认的问题,只有消息成功被服务接受,事务提交才能成功,否则我们便可以在捕获异常进行事务回滚操作同时进行消息重发,但是使用事务机制的话会降低RabbitMQ的性能。
Routing Key:消息的路由关键字。队列方式需要与队列名称一致,交换机方式根据实际需求设定。
Message Type:消息类型属性。可以自定义消息的类型,如String,Object等。
Reply-To Queue:用于指定回复的队列的名称。该属性是业务流程的需要,不会自动创建指定的回复队列。
Correlation Id:消息的关联ID。当存在多个计算节点时,通过该属性是的每个线程确定收到的消息与该线程对应。
ContentType:消息扩展类型。与HTTP中的相同字段意义一致,可以是text/plain,JSON等。
Message Id:消息的ID。通过设定消息ID,完成业务上的某些需求。
3、消息头信息。Key-value格式设置头信息,可以是任意的进行业务逻辑的数据。
- 消息体。实际发送的消息内容,可以通过增加字符的方式修改消息体内容大小(1kb,10kb,50kb,100kb)
- AMQP Consumer参数说明
- 采样器的名称和备注。这是JMeter所有采样器的属性,用来进行线程组的采样管理。建议取有意义的名字。
- 交换机信息。如果需要发送的MQ消息是以交换机的方式进行消息传递,需要配置。如果不需要则配置“Exchange”属性为空即可。具体的属性含义如下。
Exchange:交换机名称,默认为jmeterExchange。RabbitMQ消息传递通过交换机或队列模型进行,需要根据实际系统定义情况进行配置。
Exchange Type:交换机类型,规定了消息的路由策略,根据实际的消息交换机类型进行配置,可选为direct,topic,headers,fanout。
Durable?:交换机的持久化属性。持久化队列和非持久化队列的区别是,持久化队列会被保存在磁盘中,固定并持久的存储,当服务重启后,该队列会保持原来的状态在RabbitMQ中被管理,而非持久化队列不会被保存在磁盘中,服务重启后队列就会消失。
Auto Delete?:交换机的自动删除属性。如果该交换机没有任何订阅的消费者的话,该交换机会被自动删除。这种队列适用于临时队列。
Redeclare?:该交换机是否可以重新声明。当声明的交换机Durable?或者Auto Delete?与已经存在交换机不一致,会出现类似如下错误:
Caused by:com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method
(reply-code=406,reply-text=PRECONDITION_FAILED - inequivalent arg 'durable' for exchange'jmeterExchange' in vhost '/': received 'false' butcurrent is 'true', class-id=40, method-id=10) 所以AMQP插件增加了重新声明属性,当交换机声明与已经存在的不一致时,如果勾选了可重新声明,会将原交换机删除,重新定义一个新的。
3、队列信息。如果需要发送的MQ消息是以队列的方式进行消息传递,需要配置。如果不需要则配置“Queue”属性为空即可。具体的属性含义如下。
Queue:队列名称,默认为jmeterQueue。
Routing Key:队列的路由关键字,通过路由关键字的设定,可以完成多个消息统一处理的需求。对于队列的方式,需要与队列名称一致。
Durable?、Auto Delete?、Redeclare?属性的作用与交换机类似。
Exclusive?:队列的排他性属性。如果想创建一个只有自己可见的队列,即不允许其它用户访问,可以将一个Queue声明成为排他性的(Exclusive Queue)。
Message TTL:Time-To-Live,消息过期时间,单位为毫秒。
Expires:队列的超期时间,单位为毫秒。该值必须为正数(与消息 TTL 不同,该值不可以为 0),所以如果该参数设置为 1000 ,则表示该队列如果在 1 秒钟之内未被使用则会被删除。
4、RabbitMQ服务信息。RabbitMQ服务的连接信息。具体包括如下属性。
Virtual HOST:使用的RabbitMQ服务虚拟主机信息。通过虚拟主机可以在服务器上划分多个虚拟空间,起到消息隔离的作用,默认为根目录“/”。
Host:RabbitMQ服务所在主机IP或名称,使用名称时需要保证DNS正确性。
Port:RabbitMQ服务所在端口,默认为5672。
Username:使用RabbitMQ服务的用户名。
Password:使用RabbitMQ服务的密码。
Timeout:连接RabbitMQ服务的超时时间,单位为毫秒。
1、接收设置。接收消息本身的属性。
Number of samples to Aggregate表示AMQP采样器工作一次消费几条消息。
Reccive Timeout:接收超时时间。即等待设置时间没有收到消息则退出,单位毫秒。
PrefetchCount:直观理解是预先获取的消息条数。Prefetch Count允许为每个Consumer指定最大的unacked messages数目。简单来说就是用来指定一个Consumer一次可以从消息中心中获取多少条message并缓存。一旦缓冲区满了,会停止投递新的message给该Consumer,直到它发出ack。
2、队列操作。接收消息时对队列本身的处理。具体包括如下信息。
Purge Queue:清除队列。消费消息后将队列清空。
Auto ACK:自动应答属性。在订阅消息的时候可以指定应答模式,当自动应答等于true的时候,表示当消费者一收到消息就表示消费者收到了消息,消费者收到了消息就会立即从队列中删除。
Read Response:读取消息内容。一般情况都是要读取消息体的。
UseTransactions?:与AMQP Publisher含义一致。
- 问题收集
无
- 备注
无
- 备注
- 参数说明
猜你喜欢
- 10小时前vue-router路由模式详解
- 10小时前ImageNet Classification with Deep Convolutional 论文笔记
- 10小时前rust跟我学二:模块编写与使用
- 10小时前JavaMySql+hadoop高校固定资产管理系统 74965(免费领源码)计算机毕业设计选题推荐上万套实战教程JAVA、PHP,node.js,C++、python等
- 10小时前怎样查看kafka写数据送到topic是否成功
- 10小时前3D Gaussian Splatting:用于实时的辐射场渲染
- 7小时前准备好了吗英文(准备好了吗英文咋说)
- 5小时前欧多桑(欧多桑火锅)
- 5小时前manage是什么意思(manage是什么意思翻译)
- 4小时前互联网理财(互联网理财平台排名)
网友评论
- 搜索
- 最新文章
- 热门文章