RabbitMQ功能测试+性能测试简单方法

一、如何测试RabbitMQ的功能

1、联系开发找到队列的名称;登录MQ后台管理地址;点击Queues页,输入队列名搜索出目标队列(支持模糊查询)

 

 

2、准备测试数据

(1)已知json格式时,根据不同的场景,提前准备各种格式的json;

(2)未知json格式时,点击队列名,在Get Messages输入数量,点击Get Message(s)按钮,下方显示数据。复制出格式后,根据不同的场景,提前准备各种格式的json;

 

图1

 

 

图2

3、启动tomcat,如无异常,消费者线程已自动启动,重点关注自启动消费者

 

 

4、产生消息

1)运行QueueTest中的producer产生消息(从代码层测试时)

(2)RabbitMQ上面直接publish

 

 

3)产生MQ消息的地方操作产生

5、验证程序是否正确消费此消息

 

 

异常场景:

1、消费者启动后,未显示在队列的Consumers

2、消费者启动后,消费入库时报错

3、消费者启动后,输入正确的json,重复入库

4、消费者启动后,消费但未入库

5、消费者启动后,消费者刚开始显示,但后来消失(消费者假死)

6、消费者启动后,输入错误的json,消费失败

7、消费者启动后,消费者堵塞(队列阻塞,无法继续添加数据,可能导致服务挂掉

二、如何测试 rabbitmq 的性能

测试持久化和非持久化状态下上述场景的收/发性能不同消息大小状态的收/发性能。

轮持久化的重要性:持久化的服务器收到消息后就会立刻将消息写入到硬盘,就可以防止突然服务器挂掉,而引起的数据丢失了。但是服务器如果刚收到消息,还没来得及写入到硬盘,就挂掉了,这样还是无法避免消息的丢失。

Rabbitmq原生是非持久化状态,需要重新封装才能为持久化状态。常用的exchange类型有三个direct发布与订阅fanout(广播)、topic(主题)

 

测试方法(百度知道搜索的,未亲自实践):

1、声明7个具有不同属性的queue,分别和名为test_exchage的exchange进行绑定(因为exchange为fanout类型,所以测试代码中的routing_key其实是不起作用的);

2、向exchange发送具有persistent属性的消息(delivery_mode=2);

3、创建7个消费者分别从上述7个queue中获取消息;

4、测试结果如下

 

 

三、学习资料

RabbitMQ的一些概念

RabbitMq中的交换机

RabbitMQ系列二(构建消息队列)

RabbitMQ之PublisherConfirm实战总结

 

posted @ 2017-02-06 12:38  优雅de宇  阅读(24808)  评论(3编辑  收藏  举报