简介

并发:有时候,我们需要加快消息的处理速度,这时候,我们可以通过提高消息处理程序的并发量,来提高消息的处理能力,本质就是多个消费者消费同一个队列的消息

限流:有些场景,消费者端处理并发太大的时候,会影响消息处理端的性能,这时候需要限流

实现过程

并发

在要并发的监听队列的方法的@RabbitListener注解中配置concurency=“min-max”,min是最小并发数,max是最大并发数

1
@RabbitListener(queues = {RabbitMQConfig.DIRECT_QUEUE},concurrency = "5-8")

限流

在要限流的监听队列的方法所在类RabbitMQConsumerServiceImpl.java中添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
@Resource
private CachingConnectionFactory cachingConnectionFactory;

@Bean(name = "limitContainerFactory")
public SimpleRabbitListenerContainerFactory simpleRabbitListenerContainerFactory() {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(cachingConnectionFactory);
//设置每次处理消息数量为5
factory.setPrefetchCount(5);
return factory;
}

在@RabbitListener注解中配置containerFactory = “limitContainerFactory”

1
@RabbitListener(queues = {RabbitMQConfig.DIRECT_QUEUE}, concurrency = "5-8",containerFactory = "limitContainerFactory")