当前位置: 首页 > news >正文

RabbitMQ和JMeter,一个完美的组合!优化你的中间件处理方式

RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息中间件,它是基于Erlang语言编写的,并发能力强,性能好,是目前主流的消息队列中间件之一。

RabbitMQ的安装可参照官网( https://www.rabbitmq.com/),安装完以后启动管理服务,RabbitMQ提供强大的管理功能。

在使用Jmeter处理RabbitMQ以前,首先需要了解AMQP协议关于队列的规定,RabbitMQ支持下列几种队列:

  • Basic queue 简单队列:
  • 一个Producer对一个Consumer,功能类似于ActiveMQ的P2P模式
  • Work queue 轮询分发 :
  • 一个Producer对应多个 Consumer,可以采用轮询或其他算法来设置Consumer进行消费,Producer的消息会被其中某一个Consumer消费
  • Fanout Exchange:
  • 生产者不将消息发送到消息队列,而是发送到交换机,每个队列绑定到交换机,生产者发送的消息经过交换机到达队列,实现一个消息被多个消费者消费的目的,功能类似于ActiveMQ的Topic/Subscriber模式
  • Direct Exchange:
  • 路由模式,根据key进行交换机和队列绑定
  • Topic Exchange:
  • 通配符模式,一个消费者队列可以有多个消费者实例,其中只有1个实例会接收到消息

较为常用的有Direct Exchange和FanoutMode,本文以DirectExchange为例说明如何使用Jmeter处理RabbitMQ消息中间件。在使用Jmeter发送和消费RabbitMQ消息以前,我们首先通过控制台在RabbitMQ里新建一个Direct Exchange的交换机,并通过Key绑定相应队列

01、安装JmeterRabbitMQ插件

Jmeter没有内置对RabbitMQ的支持,在使用Jmeter发送和接受RabbitMQ以前,需要首先下载相应插件包编译后放置到Jmeter的lib当中( https://github.com/jlavallee/JMeter-Rabbit-AMQP )安装完插件包以后,新建Jmeter脚本,可以在脚本中看到AMQP Publisher和AMQP Consumer取样器,分别对应AMQP协议的消息发送者和消息接受者。

02、Jmeter发送RabbitMQ消息

新建AMQP Publisher,因为本示例采用的是Direct Fanout模式,填写完RabbitMQ连接信息以后,在Publisher里需要指定对应的消费者的绑定Key以及交换机

03、Jmeter接受RabbitMQ消息

新建AMQP Consumer,此处指定RabbitMQ连接信息,交换机名称,类型以及队列名即可(需要和生产者匹配)

运行脚本,查看结果数,此时也可以通过RabbitMQ控制台看到消息发送和接受的情况。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末领取】


     【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图+全套资料】


一、Python编程入门到精通


二、接口自动化项目实战  

三、Web自动化项目实战


四、App自动化项目实战 

五、一线大厂简历


六、测试开发DevOps体系 

七、常用自动化测试工具


八、JMeter性能测试 

九、软件测试全套资料

十、总结(文末尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!     

http://www.lryc.cn/news/125014.html

相关文章:

  • WARNING: IPv4 forwarding is disabled. Networking will not work
  • SpringBoot复习:(40)@EnableConofigurationProperties注解的用法
  • Live Market是如何做跨境客户服务的?哪些技术赋能?
  • 2023年7月京东洗衣机行业品牌销售排行榜(京东数据分析软件)
  • 【0214】postgres后端进程session退出,如何通过日志分析其会话信息
  • Rust 重载运算符|复数结构的“加减乘除”四则运算
  • Oracle删除表空间
  • Mysql - 配置Mysql主从复制-keepalived高可用-读写分离集群
  • Qt QLineEdit输入时限制,采用正则表达式
  • 【CSS】文本效果
  • Django快速上手,写一个简单的页面,快来看看吧~
  • 【Express.js】数据库初始化
  • 【数理知识】三维空间旋转矩阵的欧拉角表示法,四元数表示法,两者之间的转换,Matlab 代码实现
  • 【业务功能篇63】Springboot聊聊 过滤器和拦截器
  • 提高学生学习效率的模拟考试系统
  • 解决QWebEngineView在linux下加载本地html失败的问题
  • 如何使用Redis实现内容推送功能
  • 怎么对视频进行压缩?
  • redisson配置类---SpringBoot集成、redis单机和集群模式配置
  • 瓴羊发布All in One 产品,零售SaaS的尽头是DaaS?
  • win10中Docker安装、构建镜像、创建容器、Vscode连接实例
  • 贝锐蒲公英:快速搭建连锁门店监控体系,赋能企业高效管理
  • c++ WinInet InternetOpenUrl下载中文文件
  • 算法通过村第三关-数组青铜笔记|单调数组
  • Springboot MultipartFile文件上传与下载
  • js this变量
  • Ubuntu ip冲突,修改静态IP方法
  • windows下dll文件的创建详细教程
  • 一些Git Repo
  • 【Unity脚本开源】记录鼠标按下的位置和移动的距离来进行物体的旋转,并在鼠标释放后将物体恢复到初始旋转位置