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


    前言


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

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

    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中间件没有试过,如果你们项目中需要,可以试一下.

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

  • 相关阅读:
    jsp学习之——关于请求转发和重定向的形象理解
    java多线程学习之——多线程中几种释放锁和不释放锁的操作
    DBUtils学习之——使用ResultSetHandler接口的各个实现类实现数据库的增删改查
    java网络编程学习之——构建基于多线程的网络通信模型1
    web后端学习过程中技巧总结(持续更新。。。)
    关于表单form元素中onsubmit事件处理机制的认识
    Java小案例——使用双重for循环实现杨辉三角的输出
    Android工具大杂烩
    基于上一篇AS项目依赖库问题的优化解决方案
    Gradle脚本打包AndroidStudio依赖库的问题
  • 原文地址:https://www.cnblogs.com/51test/p/7280879.html
Copyright © 2020-2023  润新知