前言

JMS 介绍:JMS 即 Java 消息服务(Java Message Service)应用程序接口,是一个 Java 平台中关于面向消息中间件(MOM)的 API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。(百度

)

本文只测试 ActiveMQ,其他消息中间件应该同理.

ActiveMQ 介绍

JMS 常见 2 种消息模型:

点对点 (Queues 队列)

生产者产生消息,仍 1 条消息给 ActiveMQ,消费者监听 ActiveMQ,从 ActiveMQ 中取走 1 条消息,并销毁这个消息,且只会有一个监听的消费者取走.其他消费者不会取走信息

广播/订阅 (Topics 队列)

广播出 1 条消息给 ActiveMQ,订阅监听 ActiveMQ,所有当时监听 ActiveMQ 的订阅都可以取到这条消息,并销毁这个消息,

3 . 虚拟 Topics

为什么说 2 种消息模型,这里会有第三种,因为 Topics 队列的性质决定,当我要发消息给很多订阅,但是如果订阅监听服务挂掉,就不能收到这个消息,导致消息未发布到这个订阅,所以引申出第三个消息模型,虚拟 Topics.

广播出 1 条消息给 ActiveMQ Topics 队列,ActiveMQ 会自动转换给要分发消息的订阅 Queues 队列.然后订阅监听 Queues 队列去取走消息.这 2 种消息模型的结合,产生出第三种消息模型,虚拟 Topics.

准备工作

以 ActiveMQ 为例子,使用 jmeter 测试 JMS.

Jmeter 版本:3.2

ActiveMQ 版本 5.14.5

编写jndi.properties添加到ApacheJMeter.jar 中

新建jndi.properties到 jmeter/bin 目录下

复制内容为:

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory

java.naming.provider.url = tcp://IP:61616

connectionFactoryNames = connectionFactory

queue.T_MDM_Q = Queue.T_MDM

queue.T_IPS_Q= Queue.T_IPS

topic.T_MDM_T= VirtualTopic.T_MDM

topic.T_IPS_T= VirtualTopic.T_IPS

java.naming.factory.initial:ActiveMQ jar包中 init 所需的 类名

java.naming.provider.url:ActiveMQ的地址

connectionFactoryNames:链接工厂名称

queue.T_MDM_Q:队列名称

queue:说明是queue队列

T_MDM_Q:自定义字段,在后面用来指向队列名称

同理topic.T_MDM_T

把配置文件打到ApacheJMeter.jar 中

在 jmeter/bin 目录下运行

jar uf ApacheJMeter.jar jndi.properties

下载 ActiveMQ

把 ActiveMQ 下 activemq-all-x.x.x.jar放到 Jmeter/lib 下

配置 Jmeter 进行测试 点对点 (Queues 队列)

待测消息模型:点对点 (Queues 队列)

待测队列名称:Queue.T_MDM

右键》添加》sampler》JMS point-to-point 添加一个队列的界面

QueueConnection Factory:jndi.properties中 connectionFactoryNames 字段

JNDI Name Request queue:生产者向哪个队列插入消息,jndi.properties中对应待测队列名称的 queue.xxxxx

JNDI Name Reply queue:消费者从哪个队列取消息,jndi.properties中对应待测队列名称的 queue.xxxxx

Content:消息内容

InitialContextFactory:org.apache.activemq.jndi.ActiveMQInitialContextFactory

Provider URL:ActiveMQ 地址

配置 Jmeter 进行测试 发布/订阅 (Topic 队列)

待测消息模型:发布/订阅 (Topic 队列)

待测队列名称:VirtualTopic.T_MDM

配置发布 Publisher

右键》添加》sampler》JMS Publisher 添加一个 Publisher 界面

InitialContextFactory:org.apache.activemq.jndi.ActiveMQInitialContextFactory

Provider URL:ActiveMQ 地址

QueueConnection Factory:jndi.properties中 connectionFactoryNames 字段

Destination:发布往队列的名称,jndi.properties中对应 Topic 队列名称的 topic.xxxx

Text Massage:发布的消息

配置订阅 Subscriber

右键》添加》sampler》JMS Subscriber 添加一个 Publisher 界面

总结

上面只介绍了 ActiveMQ 的配置方法,因为我也只调了 ActiveMQ,其他 JMS 中间件没有试过,如果你们项目中需要,可以试一下.

Jmeter 测试 JMS 中涉及的其他参数设置,可能会用到的,查看 Jmeter 说明http://jmeter.apache.org/usermanual/build-jms-point-to-point-test-plan.html

jmeter测试java服务_Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能相关推荐

  1. jmeter重写java请求_jmeter之编写java请求-扩展Java Sampler

     分类: JMeter实践(19) 版权声明:本文为博主原创文章,未经博主允许不得转载. 新浪围脖>79642549 有以下优势 脚本易维护 易调试 开发脚本周期短 不过网上扩展java请求文章 ...

  2. app测试、h5测试、服务端测试区别

    (存放位置)1.h5页面放在服务端,网速慢的时候,页面出来的就慢,app的页面都是本地写出来的.可以用弱网测试看出一些区别来.(访问机制)2.h5的页面都是访问url,app都是本地写出来的页面,不需 ...

  3. java 服务编排_适用于Java开发人员的微服务:部署和编排

    java 服务编排 在这篇文章中,我们拥有一个全面的文章微服务针对Java开发:部署和协调. 1.简介 如今,越来越多的组织依靠云计算和托管服务产品来托管其服务. 这种策略有很多好处,但是您仍然必须为 ...

  4. jmeter 聚合报告说明_Jmeter 测试结果分析之聚合报告简介

    聚合报告(aggregate report) 对于每个请求,它统计响应信息并提供请求数,平均值,最大,最小值,错误率,大约吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量. 吞吐量是以取样目标点 ...

  5. jmeter最大请求数_jmeter 测试某网页最大并发用户数;

    在jmeter中,提到m并发,你可能马上想到线程数设置为m: 调节服务器压力的是rps,即每秒请求数:rps由线程数,循环次数,ramp-up time调节: 问题: 有一个页面,需要测试一下最大支持 ...

  6. java服务发现_【Java】Eureka – 服务发现(Server)

    当客户端请求全量更新的时候,会调用ApplicationsResource#getContainers这个方法.如果是增量,会调用ApplicationsResource#getContainerDi ...

  7. java + testng wsdl 测试_在测试中使用XPATH断言的策略

    ***************************************************************** 在这门课里你将学到Web Services(SOAP WebServ ...

  8. 通用Shell脚本,可以优雅的启动/关闭/重启/JAVA服务

    shell脚本 service.sh,如果没有脚本执行权限先使用 chmod 777 service.sh 附加权限. sh service.sh start            启动服务 sh s ...

  9. 服务端_多面手之服务端测试

    阿里 qa 导读:久违了,夏去秋至,阿里巴巴技术质量新人手册又开始更新啦~ 上期我们给大家带来的是成为测试多面手中的移动测试篇,今天我们继续和大家讲讲服务端测试. 服务端测试 服务端测试有两种:一种是 ...

最新文章

  1. 【C 语言】字符串模型 ( strstr-while 模型 )
  2. wxpython应用程序对象与顶级窗口_wxPython--学习笔记
  3. AS 自定义 Gradle plugin 插件 案例 MD
  4. uni-app—从安装到卸载
  5. 【UVALive - 7344】Numbered Cards【数位DP+状压DP】
  6. mysql_TCL语言(事务)
  7. 喜乐美容美发管理系统 v20070625 加强版 下载
  8. 无人车系统(三):用python写一个简单的无人车仿真环境
  9. 【方法分享】准大学生如何自学C语言?
  10. hello guass
  11. Unable to detect adb version, exit value: 0xc000007b
  12. Hyperledger/FireFly
  13. 立体视觉入门指南:对级约束与Fusiello法极线校正
  14. 服务器如何设置404错误页面
  15. 如何将WPS中新建表格下的空白行去掉?
  16. ros学习(2-2):ros节点创建(python)
  17. Java前端学习(Day 1)
  18. 火山视窗CEF浏览器用网页框架操作实现取本机IP、地址
  19. SAP ABAP 详细解析关于COMMIT WORK 和COMMIT WORK
  20. 考研数据结构考点之查找

热门文章

  1. [机器翻译]参与 Microsoft 开放源代码软件项目的方式
  2. .net core实践系列之SSO-同域实现
  3. Unity引擎及编辑器C#源代码发布
  4. IdentityServer4 第三方快速入门和示例
  5. 使用Angular 4、Bootstrap 4、TypeScript和ASP.NET Core开发的Apworks框架案例应用
  6. .NET Core下使用gRpc公开服务(SSL/TLS)
  7. Asp.Net Core 通过中间件防止图片盗链
  8. 来自.NET FM的感谢信
  9. frameset在html5下用什么代替_速速围观!冬至吃货地图来啦~蚌埠的吃货们,你们今天吃什么?...
  10. 学习SQL数据更新,这一篇就够了!