注意: RabbitMQ版本是3.6.1。
用的是Spring的RabbitTemplate。
如果RabbitMQ队列中堆积着数据,且没有生产者往队列中放入数据,那么,每个消费者线程从队列中拿数据的速度差不多是1000/s多一点,这里只是从队列中取数据而后丢弃,不对数据进行逻辑处理。
当只有一个Consumer时,delive的速度达到了1300/s,有时会跳到1600/s。
开启俩个消费者线程,速度差不多是2000/s,
开启三个消费者线程呢,速度是否是3000/s,实际来看,大约2700/s,有时会调到3000/s左右。且测试中没有发现redelive的情况,即没有重发的情况。
当消费者线程数量t大于2或者3时,RabbitMQ的delive速度基本小于t乘以1000的积。
上面的测试,发送的消息,消息报文体不是很大。
在三个消费者的情况下,如果RabbitMQ同时处理着Producer的produce、消费者的consme,RabbitMQ的delive速度会下降到500/s或者800/s。
一个Producer,进行produce时,RabbitMQ的publish的速度达到2000/s,有时是4000/s,有时7000/s,有时都会跳到10000/s。感觉producer的速度快于consumer的速度。
开启4个Producer,4个Consumer时,RabbitMQ的publish速度达到5000/s左右,但是delive的速度却只是达到2500/s左右,有时还比2500/s还少。
当4个Producer的produce完成后,RabbitMQ的delive速度达到了4000/s左右,这时候才和其consumer线程个数对应(4个线程x1000个/s)。
由上述可以看出,并不是Consumer数量越多,RabbitMQ上consume的速度同Consumer线程数量增长而呈线性增长,要分情况,要看RabbitMQ是否同时处理Producer的生产处理和Consumer的消费处理。不与线程数量增长呈线性增长在RabbitMQ的delive速度上最明显。
上面只是我自己做实验,得出的,建议自己做实验验证,我的数据不一定非常准确。
(adsbygoogle = window.adsbygoogle || []).push({});