简介
并发:有时候,我们需要加快消息的处理速度,这时候,我们可以通过提高消息处理程序的并发量,来提高消息的处理能力,本质就是多个消费者消费同一个队列的消息
限流:有些场景,消费者端处理并发太大的时候,会影响消息处理端的性能,这时候需要限流
实现过程
并发
在要并发的监听队列的方法的@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); factory.setPrefetchCount(5); return factory; }
|
在@RabbitListener注解中配置containerFactory = “limitContainerFactory”
1
| @RabbitListener(queues = {RabbitMQConfig.DIRECT_QUEUE}, concurrency = "5-8",containerFactory = "limitContainerFactory")
|