马渡江头苜蓿香,片云片雨渡潇湘
--《明朝那些事儿》
转自:https://www.cnblogs.com/DeryKong/p/14847577.html
一、下载安装ActiveMQ
ActiveMQ下载:https://activemq.apache.org/
解压:tar -zxvf apache-activemq-5.16.2-bin.tar.gz
切换到activemq的bin目录:cd apache-activemq-5.16.2/bin
启动MQ:./activemq start
检查MQ是否正常启动:ps -ef|grep activemq|grep -v grep
[图片上传失败...(image-a6af85-1649989530880)]
浏览器打开:http://localhost:8161 admin/admin 登录查看
[图片上传失败...(image-bb348f-1649989530880)]
JMS脚本开发
jms(java message service):java消息服务器应用程序接口,是一个Java平台面向消息中间件的api,用于在两个应用程序之间,或分布式系统中发送信息,进行异步通信
Connection Factory:创建一个连接,向消息服务器发送消息以及从消息服务器接收信息均是通过此连接进行
Connection:是客户端与消息服务器的活动连接
Session:是用于生产和使用消息的单线程上下文
MessageProduce:指定的物理目标发送消息
MessageConsumer:客户端是使用Message Consumer对象从指定的目录目标接收信息
二、jmeter开发jms脚本的步骤
1、创建 jndi.properties文件
java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url=tcp://localhost:61616
指定 connectionFactory 的 jndi名字,多个名字之间可以逗号隔开
connectionFactoryNames=connectionFactory
注册queue,格式:
queue.[jndiName]=[physicalName]
使用时:(Queue)context.lookup("jndiName"),此处是MyQueuePerPertest自定义命名
queue.MyQueuePerPertest=MyQueuePerPertest
注册 topic,格式:
topic.[jndiName]=[physicalName]
使用时:(Topic)context.lookup("jndiName"),此处是MyTopicPerPertest自定义命名
queue.MyTopicPerPertest=MyTopicPerPertest
2、把这个文件夹加入到ApacheJMeter.jar这里
保存并把这个文件复制到 JMETER_HOME/bin (JMETER_HOME为 jmeter 的安装目录)目录中。
由于 bin 目录并不在 jmeter 的 classpath 中,所以需要执行一些额外的工作来把 jndi.properties 添加到 jmeter 的classpath 中。
这儿使用一种最简单的办法:把 jndi.properties 打包到 jmeter 的启动 jar 包中。 jmeter 的启动 jar 包为 JMETER_HOME/bin/ApacheJMeter.jar,所以需要把 jndi.properties 添加到这个 jar 文件中。执行如下操作,打开命令行窗口,并定位到 JMETER_HOME/bin 目录,运行如下命令 jar uf ApacheJMeter.jar jndi.properties 就可以,
命令行:jar uf ApacheJMeter.jar jndi.properties
3、拷贝Active所需用到的包文件到jMeter的lib下面
jmeter 在测试 jms 的时候会使用到 activemq 提供的 jms 的实现类,这些类并没有随 jmeter 一起分发,所以需要把这些类添加到 jmeter 的 classpath 中。只要把 ACTIVE_HOME/activemq-all-5.2.0.jar 文件复制到 JMETER_HOME/lib 目录中即可。
重启JMeter,添加取样器列表可以看到有JMS的选择
[图片上传失败...(image-a56c32-1649989530880)]
[图片上传失败...(image-dd036a-1649989530880)]
[图片上传失败...(image-51a726-1649989530880)]
[图片上传失败...(image-b7e5e4-1649989530880)]
这里,发送MQ的脚本就完成了
三种方式:
1、jms to jms
测试JMS的PUB/SUB模式
步骤:
jms的订阅(消费)
[图片上传失败...(image-c5f720-1649989530880)]
在这里添加响应的信息,进行请求,会一直等待状态
jms的发送者:
[图片上传失败...(image-7725a7-1649989530880)]
[图片上传失败...(image-b000b3-1649989530880)]
请求消息,再来看订阅者,就会看到消息接收
[图片上传失败...(image-3f61f1-1649989530880)]