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 绑定相应队列
安装 JmeterRabbitMQ 插件
Jmeter 没有内置对 RabbitMQ 的支持,在使用 Jmeter 发送和接受 RabbitMQ 以前,需要首先下载相应插件包编译后放置到 Jmeter 的 lib 当中( https://github.com/jlavallee/JMeter-Rabbit-AMQP )安装完插件包以后,新建 Jmeter 脚本,可以在脚本中看到 AMQP Publisher 和 AMQP Consumer 取样器,分别对应 AMQP 协议的消息发送者和消息接受者。
Jmeter 发送 RabbitMQ 消息
新建 AMQP Publisher,因为本示例采用的是 Direct Fanout 模式,填写完 RabbitMQ 连接信息以后,在 Publisher 里需要指定对应的消费者的绑定 Key 以及交换机
Jmeter 接受 RabbitMQ 消息
新建 AMQP Consumer,此处指定 RabbitMQ 连接信息,交换机名称,类型以及队列名即可(需要和生产者匹配)
运行脚本,查看结果数,此时也可以通过 RabbitMQ 控制台看到消息发送和接受的情况。