用Jmeter测试RabbitMQ
1.下载AMQP插件
github上面有源码,可以通过ant+ivy在本地进行打包(下载IDEA实践成功)
https://github.com/jlavallee/JMeter-Rabbit-AMQP(github 上面支持中文有问题)
已经解决好乱码的插件:插件下载
2.将下载的插件放到Jmeter--lib/ext目录,然后启动程序,可以看到"AMQP Publisher" 和 "AMQP Consumer" 2个选项
3.AMQP Publisher/Consumer 请求 介绍
Exchange(交换机):如果此处不填写,使用默认名称--(AMQP default)
Exchange Type:分别是direct(单播),fanout(广播),topic(组播),headers,每种类型路由的策略不同,公司用direct 和 fanout 这2种路由居多
direct:如果一个队列绑定到该交换机上,并且当前要求路由键为 X ,只有路由键是 X 的消息才会被这个队列转发。默认交换机便是该类型。
fanout:一个发送到交换机上的消息都会被转发到与该交换机绑定的所有队列上。 Fanout 交换机发消息是最快的。
topic:将路由键和某模式进行匹配,可以理解成模糊处理(不是特别明白)
Durable(持久化):具有这个标志的队列和交换机会在重启之后重新建立,它不表示说在队列当中的消息会在重启后恢复
Redeclare(重定义):此功能不是特别清楚
Message TTL(Time-To-Live Extensions):消息过期时间,时间为毫秒
Exclusive(排他性队列):创建一个只有自己可见的队列,即不允许其它用户访问,在没有消费者来消费的时候,他就会自动的删除
Expire(超期时间):该值必须为正数(与消息 TTL 不同,该值不可以为 0),所以如果该参数设置为 1000 ,则表示该 queue 如果在 1 秒钟之内未被使用则会被删除。
Auto delete:当没有队列或者其他exchange绑定到此exchange的时候,该exchange被销毁
Prefect Count:消费者自身处理能力有限,从rabbitmq获取一定数量的消息后,希望rabbitmq不再将队列中的消息推送过来,当对消息处理完后(即对消息进行了ack,并且有能力处理更多的消息)再接收来自队列的消息。在这种场景下,我们可以通过设置basic.qos信令中的prefetch_count来达到这种效果(一般不用设置)
通过Jmeter实现请求:
参考用例:https://github.com/jlavallee/JMeter-Rabbit-AMQP/blob/master/examples/RPC_Load_Test.jmx
备注:如果Reply-to Queue为空,则"AMQP Consumer--Queue"为空,不能得到返回数据
参考文献:
http://www.tuicool.com/articles/6BRzMji
http://www.bbsmax.com/A/lamd0MWzge/
--------------------- 本文来自 小李广 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/luozhuwang/article/details/62044872?utm_source=copy