什么是消费端限流
当我们的RabbitMQ服务器上有大量未处理的消息时,消费端的客户端可能无法同时处理大量的消息,这时候就要对消费端进行限流,同时只接受一定数量的消息。
如何限流
RabbitMQ提供了一种qos(服务质量保证)的功能,即在非自动确认消息的前提下,如果一定数量的消息(可以通过consume或者Channel设置QoS的值)未被确认前,不再消费新的消息。
源码
// prefetchSize:消费消息的大小,0表示不做限制;
// prefetchCount:同时消费消息的数量;
// global:限流策略应用的级别,true:Channel级别;false:consumer级别;
public void basicQos(int prefetchSize, int prefetchCount, boolean global) throws IOException {
this.exnWrappingRpc(new Qos(prefetchSize, prefetchCount, global));
}
例子
Producer.java
public class Producer {
public static void main(String[] args) throws Exception {
Connection