Jmeter测试JMS

所使用的Jmeter版本apache-jmeter-5.4.1,activemq版本apache-activemq-5.16.2

Jndi和jmeter脚本:

        https://note.youdao.com/s/34PpahAP

参考:

使用Jmeter测试JMS - 测试工具 - 开发语言与工具 - 深度开源

activemq -jndi: http://activemq.apache.org/jndi-support.htm

一、创建jndi.properties文件

  由于 jmeter 是通过 jndi 来获得 jms 中相关对象的,如 ConnectionFactory 和 Destination,所以在 jmeter 的 classpath 中需要添加一个 jndi.properties 属性文件,用于配置jndi

  创建jndi.properties文件,包含如下内容

#java.naming.factory.initial = org.activemq.jndi.ActiveMQInitialContextFactory
java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = tcp://localhost:61616

#指定connectionFactory的jndi名字,多个名字之间可以逗号分隔。
#以下为例:
#对于topic,使用(TopicConnectionFactory)context.lookup("connectionFactry")
#对于queue,(QueueConnectionFactory)context.lookup("connectionFactory")
connectionFactoryNames = connectionFactory

#注册queue,格式:
#queue.[jndiName] = [physicalName]
#使用时:(Queue)context.lookup("jndiName"),此处是MyQueue
queue.MyQueueMr = example.MyQueueMr

#注册topic,格式:
# topic.[jndiName] = [physicalName]
#使用时:(Topic)context.lookup("jndiName"),此处是MyTopic
topic.MyTopic = ActiveMQ.Advisory.Consumer.Topic.cacheupdate


  保存并把这个文件复制到 JMETER_HOME/bin(JMETER_HOME为 jmeter 的安装目录)目录中。

二、把jndi.properties放到jmeter的启动jar包中

  由于bin目录并不在jmeter的classpath中,所以需要执行一些额外的工作来把jndi.properties添加到jmeter的classpath中,把jndi.properties打包到jmeter的启动jar包中。jmeter的启动jar包为JMETER_HOME/bin/ApacheJMeter.jar,所以需要把jndi.properties 打包到这个 jar 文件中。直接将文件拖入jar包中即可。

  或者执行如下操作,打开命令行窗口,并定位到 JMETER_HOME/bin 目录,运行如下命令 jar uf ApacheJMeter.jar jndi.properties

三、添加activemq-all-5.2.0.jar包到Jmeter的lib库

  将ACTIVE_HOME/activemq-all-5.2.0.jar文件复制到JMETER_HOME/lib目录中,jmeter在测试jms的时候会使用到activemq提供的jms的实现类,这些类并没有随jmeter一起分发,需要把这些类添加到jmeter的classpath中。

四、启动Jmeter测试JMS

  添加线程组及JMS的sampler,有三种方式的JMS消息

 1、Point-to-Point

  填写参数如下:

QueueConnection Factory:    connectionFactory
JNDI name Request queue:    MyQueueMr
JNDI name Receive queue:    MyQueueMr
Content: this is a test
Initial Context Factory:org.apache.activemq.jndi.ActiveMQInitialContextFactory
ProviderURL:    tcp://127.0.0.1:61616

 2、Publisher

  基本值同Point-to-Point,不同点在于Destination,填写JMS的topic目的地

  若在ActiveMQ中Topics的名字为example.MyTopic

  则jndi.properties文件中定义的topic如下:

  topic.MyTopic = example.MyTopic

  则Destination填写topic.后面的MyTopic

  3、Subscriber

  基本值同Publisher,不同在于可以根据需要填写Client ID,JMS Selector进行消息过滤

  报错:Response message: javax.naming.NameNotFoundException:***

  原因Destination中填写的错了,以为填写ActiveMQ中实际的Topic名

  其实在jndi.properties文件中已经实例化了,topic.MyTopic = example.MyTopic,这里example.MyTopic就是ActiveMQ中的Topic名

  因此实际填写时是填写topic.后的MyTopic

五、在配置JNDI的时候,也可以通过UI界面来配置

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值