Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能
前言
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 测试 JMS (Java Message Service)/ActiveMQ 性能的更多相关文章
- 17) JMS: java Message Service(Java消息服务)
JMS是一个标准,就像EJB,有很多开源的,商业的实现,ms技术对应的规范是jsr914,规范的实现称为jms provider,常见的实现有ActiveMQ.JBoss MQ.IBM We ...
- Java Message Service学习(一)
一,背景 近期需要用到ActiveMQ接收Oozie执行作业之后的返回结果.Oozie作为消息的生产者,将消息发送给ActiveMQ,然后Client可以异步去ActiveMQ取消息. ActiveM ...
- 认识 Java Message Service
1. Java Message Service : 是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建.发送.接收和读取消息. 实现Java 程序与MQ Server 之间互相 ...
- Java Message Service
en.wikipedia.org/wiki/Java_Message_Service Messaging is a form of loosely coupled distributed commun ...
- Simple guide to Java Message Service (JMS) using ActiveMQ
JMS let’s you send messages containing for example a String, array of bytes or a serializable Java o ...
- Jmeter测试普通java类说明
概述 Apache JMeter是Apache组织开发的基于Java的压力测试工具.本文档主要描述用Jmeter工具对基于Dubbo.Zookeeper框架的Cassandra接口.区块链接口进行压力 ...
- JMS Java消息服务(Java Message Service)
JMS 在一些场景下RPC的同步方式可能不太适合业务逻辑的处理,并且这种方式在某些场景下会导致业务的紧耦合. 基于异步交互模型的JMS解决了RPC产生的紧耦合问题,它提供了一个可以通过网络访问的抽象消 ...
- Spring的消息 Java Message Service (JMS)
Spring有两种方法提供对EJB的支持: Spring能让你在Spring的配置文件里,把EJB作为Bean来声明.这样,把EJB引用置入到其他Bean的属性里就成为可能了,好像EJB就是另一个P ...
- 【转】JMeter测试有无数据库连接池的性能
使用JMeter测试一下有无数据库连接池的性能: 1.下载JMeter 2.无连接池的servlet Java代码 public void doGet(HttpServletRequest reque ...
随机推荐
- django第三课 模版
第一步 创建项目文件: django-admin.py startproject *** 第二步 进入该文件下创建文件夹templates,在该文件夹下创建thanks.html <!DOCTY ...
- Explorer内存占用偶尔变高导致卡顿
症状: 打开 "这台电脑",加载缓慢.此时查看任务管理器,explorer内存可能飙升到几G.cpu也很高 创建和删除文件缓慢,删除单个文件也会出现进度条.此时查看任务管理器,会出 ...
- Python开发工具,服务器框架等
python服务器框架:uWSGI WEB服务器.mod_WS.Meinheld.Gunicorn.CherryPy.Bjoern 查看python内部模块命令,内置函数,查看python已经安装的模 ...
- 127.0.0.1和0.0.0.0和本机IP的区别
在一次网络课程的听课中,我突然察觉到自己有个疑惑就是在配置一些服务的时候我们会用到localhost(127.0.0.1)或者0.0.0.0 和当前主机IP这三个.那么具体该怎么使用这三个地址,这三个 ...
- MySQL中date类型的空值0000-00-00和00:00:00
1.如果mysql中使用了date类型,并且默认值为'0000-00-00', 那么数据库中的'0000-00-00 00:00:00', '0000-00-00', '00:00:00'这三个值是相 ...
- redis集群与分片(1)-redis服务器集群、客户端分片
下面是来自知乎大神的一段说明,个人觉得非常清晰,就收藏了. 为什么集群? 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取.Redis是一个很好的Cache工具.大型 ...
- ASP.NET 多环境下配置文件web.config的灵活配置---转
注意:本功能在.Net Core中已经不可用,暂时需手动修改web.config中的信息,或者将其设置在appsettings.XXX.json中,然后再使用web.config中的环境变量来制定使用 ...
- Druid连接池(三)
十二.Druid缓存 连接Oracle数据库,打开PSCache,在其他的数据库连接池都会存在内存占用过多的问题,Druid是唯一解决这个问题的连接池. Oracle数据库下PreparedState ...
- unity编辑器之自动提示订外卖
1.问题来源 事情一忙,忘记叫外卖是常有的事,到了12点同事们都吃上了饭,你却只能挨饿,估计很多程序员都有这种经历吧,这里我们来做一个unity编辑器准点提示订外卖服务的功能. 2. ...
- 【转】30+有用的CSS代码片段
来自:WEB资源网 链接:http://webres.wang/31-css-code-snippets-to-make-you-a-better-coder/ 原文:http://www.desig ...