作者处于学习阶段,刚刚完成RabbitMQ的学习,作为学生,我会用更通俗的说法,来叙述自己对RabbitMQ的了解。愿各位大佬看到有见解错误的地方和叙述不好的地方,能够帮忙纠正。来帮助大家更加深入的了解RabbitMQ。
一、RabbitMQ的分发机制
RabbitMQ有三种分发机制:轮询分发、不公平分发、预值分发。
二、轮询分发
轮询分发是默认的分发方式。其实轮询分发的理论只是很容易去解释,假如有A,B,C三个消费者,第一次消息发给了A队列,那么下一次就会分发给B,C当中的一个,假如再分发给B之后,那么就会分发给C。再来消息就会分发给A。这种叫做轮训分发,也叫做公平分发。每个队列的工作量是相同的,不会忘记谁,或者一直使用谁。
三、不公平分发
举一个例子,如果轮训分发的话,消费者A处理任务很快,而消费者B很慢。如果使用轮询分发,就会导致消费者A处于空闲状态,而消费者B却在一直干活。而如果使用了不公平分发,就可将任务发给空闲的消费者,而不是一直在那里等来等去。
如何设置为不公平分发
四、预取值分发
例如:channel.basicQos(5),就是设置该信道预取5条消息,当接受5条消息后,就将不再应答后续的消息,而内部传参的数字就是预取值的数量(要求大于1)