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 连接信息,交换机名称,类型以及队列名即可(需要和生产者匹配)