性能测试工具 Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能

news2024/11/23 4:13:37

目录

前言

ActiveMQ 介绍

准备工作

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

下载 ActiveMQ

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

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

配置发布 Publisher

配置订阅 Subscriber

总结


前言

 JMeter是一个功能强大的性能测试工具,可以用于测试各种应用程序的性能,包括JMS(Java Message Service)和ActiveMQ。JMS是一种Java平台上的消息传递标准,而ActiveMQ是一个流行的开源JMS消息代理。

ActiveMQ 介绍


JMS 常见 2 种消息模型:

  1. 点对点 (Queues 队列)
    生产者产生消息,仍 1 条消息给 ActiveMQ,消费者监听 ActiveMQ,从 ActiveMQ 中取走 1 条消息,并销毁这个消息,且只会有一个监听的消费者取走.其他消费者不会取走信息
  2. 广播/订阅 (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 队列)


  1. 待测消息模型:点对点 (Queues 队列)
  2. 待测队列名称: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 队列)


  1. 待测消息模型:发布/订阅 (Topic 队列)
  2. 待测队列名称: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 中间件没有试过,如果你们项目中需要,可以试一下.

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等)

相信能使你更好的进步!

点击下方小卡片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/752919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】如何有效防止API的重放攻击?API接口防止参数篡改?

文章目录 前言一、API接口常见的安全防护要做到主要有以下几点:二、请求参数防篡改三、防止重放攻击3.1、基于timestamp的方案3.2、基于nonce的方案3.2、基于timestamp和nonce的方案3.3、微信公众号如何保证消息不会被重放攻击 前言 API重放攻击(Replay Attacks)又…

uniapp调接口出现跨域问题。

今天在写uniapp项目的时候,使用在线模拟接口的时候,出现跨域问题。 【问题描述】: ①在内嵌浏览器运行,不会出现跨域问题,好像是内嵌浏览器自动去掉了跨域问题。 ②在外部浏览器调用的时候会出现跨域问题。&#xf…

Yalmip工具箱使用教程(2)-决策变量进阶

博客中所有内容均来源于自己学习过程中积累的经验以及对yalmip官方文档的翻译:https://yalmip.github.io/tutorials/ 1.决策变量的定义 1.1 sdpvar 上文简单介绍了sdpvar函数的用法,接下来将对其进行详细介绍。复习一下,sdpvar函数的基本语…

常用化合物谱图数据库查询系统-40个软件免费查!

化学图谱是用于描述化学物质结构和性质的图形化表示方法,在有机化学、材料科学、生物化学、药物化学等领域都被广泛的应用研究分析。不同类型的化学谱图适用于不同的化学分析和研究领域,为此笔者调研了常用化合物谱图数据库及各个类型的主流使用化学谱图…

(RX200)R5F52315ADFP/R5F52318ADFL/R5F52316CDFL微控制器基于RXv2 32位内核,54MHz 闪存 LQFP

RX200 32位微控制器 (MCU) 在功率效率和性能之间实现了平衡。这些MCU在工作模式下的电流消耗为0.12mA/MHz,在待机模式下的电流消耗仅为0.8μA(保留RAM内容)。RX200 MCU具有54MHz的最高CPU运行速度,可提供4.16 CoreMark/MHz的高性能…

Home Assistant 南方电网 计算电费

目录 1.China Southern Power Grid Statistics集成2.获取当月用电情况3.计算电费然后在UI上显示3.效果 1.China Southern Power Grid Statistics集成 链接 2.获取当月用电情况 因为我的电费是固定的,没有阶梯电价 用电量 * 0.63906875 电费 3.计算电费然后在UI…

ESXI8.0安装教程,在VMware Workstation安装esxi

文章目录 🐟前言🐟安装🐟在VMware WorkStation中创建虚拟机🐟ESXI部署安装🐟安装完成后配置 🐟前言 ESXI8.0版本开始最低RAM从以前的4GB变为8GB 本文所使用到的镜像以及Key都可以到我的网站中下载 地址&…

Python——— 面向对象

(一)初识面向对象 Python完全采用了面向对象的思想,是真正面向对象的编程语言, 完全支持面向对象的基本功能,例如:继承、多态、封装等。 Python 支持面向过程、面向对象、函数式编程等多种编程范 式。 Pyth…

数据结构初阶--排序2

目录 前言快速排序思路hoare版本代码实现挖坑法代码实现前后指针法代码实现 快排优化三项取中法代码实现三指针代码实现 快排非递归代码实现 归并排序思路代码实现归并非递归代码实现 计数排序思路代码实现 前言 本篇文章将继续介绍快排,归并等排序算法以及其变式。…

2023年iOS App Store上架流程详解(上)

目录 1.注册开发者账号 2.登录并配置人员 3.申请证书和配置文件 一.证书管理​ 二.新建证书​ 三.使用appuploader服务同步证书​ 1)申请证书 2)添加Identifiers和配置App ID 3)申请配置文件 1.在Xcode项目中配置签名 2.上传应用包…

数据库应用:死锁、悲观锁、乐观锁

目录 一、理论 1.死锁 2.悲观锁 3.乐观锁 二、总结 一、理论 1.死锁 (1)概念 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系…

INVDIA GPU参数列表:P100,V100,A100,A800,H100等性能参数

一、P100与V100 训练深层神经网络的时候,V100比P100快大约2倍 二、A100 三、A800 四、H100 引用 1、 世上最全NVDIA GPU参数列表: V100, A100, A800,H100,3090,4090, A40&#xf…

Unity使用Android Stdio接入SDK制作AAR包

最近需要在Unity2021版本中接入SDK,发现和直接接入SDK有些区别,这里把接入的流程记录一下。 Unity在最新的版本中把UnityPlayActivity.java,从Class.jar中移除,需要在Unity的工程内找到这个文件,并把其加入到Android …

【监控系统】Prometheus监控组件Mysql-Exporter配置实战

Mysql-Exporter主要监控Mysql数据库的稳定性、吞吐量、连接情况、缓冲池使用情况、查询性能等各项指标,是我们压测时常常需要监控的一些指标。 目前,Exporter 支持高于5.6版本的 MySQL 和高于10.1版本的 MariaDB。在 MySQL/MariaDB 低于5.6版本时&#…

MobPush 最佳实践:消息重弹

功能概述 消息重弹功能,可在安卓在线通道送达的消息被其他消息挤下去时,重新置顶,增加消息的曝光度和点击率。 适用场景 仅支持Mob通过自有TCP通道下发的通知消息,不支持自定义推送消息支持开发者后台和推送API配置使用 功能使…

安天逆向教程——常用汇编语句

一.汇编基础 二.条件分支 反汇编时更多关注这些条件分支。如果看懂这些条件分支,会对程序的大体逻辑有一个整体的了解。 至于程序里面的细节,有时会省略掉。往往关键的跳转理解了甚至进行一点点的改动,就会使得程序发生翻天覆地的变化。 三…

读书笔记怎么写?《金字塔原理》读书笔记

​生活工作中有很多需要表达的场景,表达最重要的是逻辑清晰,表达出来的想法才能被理解,进而解决生活或工作中的困境。 《金字塔原理》详细地介绍了思维表达的方法,金字塔原理除了能够帮助人们以书面形式组织和表达思想以外&#x…

Vue3 组件之间父子通信

文章目录 Vue3 组件之间父子通信概述选项式API父传子子传父 组合式API父传子子传父 Vue3 组件之间父子通信 概述 所有的 props 都遵循着单向绑定原则,props 因父组件的更新而变化,自然地将新的状态向下流往子组件,而不会逆向传递。 选项式…

虚拟现实:将数字融入现实

随着科技的不断进步,虚拟现实正逐渐走进我们的现实生活,为我们带来了许多新的体验和可能性。虚拟现实技术将数字世界与真实世界融合在一起,为我们创造了令人惊叹的沉浸式体验。让我们一起探索虚拟现实正在走进现实的意义和影响。 虚拟现实为我…

C语言进阶之通讯录的实现(静态版和动态版)以及动态内存管理

通讯录的实现及动态内存管理 1.通讯录实现要求2.静态版通讯录实现2.1 contact.h文件实现2.2 contact.c文件实现2.3 main.c文件实现2.4 静态版通讯录全部文件代码 3.动态内存管理3.1 为什么存在动态内存分配3.2 动态内存函数的介绍3.3 常见的动态内存错误3.4 C/C程序的内存开辟3…