Spring Boot RabbitMq 实现并发处理与限流控制

Spring Boot RabbitMq 实现-并发处理与限流控制

在高并发请求中,瞬间出现大量请求,同一时刻并发太大,访问一个系统,系统健壮性不强,很可能就会出现宕机风险,为解决这风险,可以采用MQ消息队列,进行缓存,减少并发带来的伤害。

1、利用消息队列先进先出的特性,将请求进行削峰;
2、控制好消费端的消费速度,进行必要的限流。

MQ消费问题点

消息堆积的主要原因有以下几种:
(1)消费者的速度大大慢于生产者的速度,速度不匹配引起的堆积
(2)消费者实例IO严重阻塞或者消费者所在服务器宕机
(3)消费者业务处理异常导致的消息堆积

方式一:全局配置 listener对应多个consumer消费

默认情况一下,一个listener对应一个consumer,如果想对应多个,有两种方式。

方式一:直接在application.yml文件中配置

spring:
  rabbitmq:
    listener:
      simple:
        concurrency: 5
        max-concurrency: 10

这个是个全局配置,应用里的任何队列对应的listener都至少有5个consumer,但是千万别这么做,因为一般情况下,一个listener对应一个consumer是够用的。只是针对部分场景,才需要一对多。

方式二:直接在@RabbitListener上配置

@Component
public class SpringBootMsqConsumer {
   
    @RabbitListener(queues = "spring-boot-direct-queue",concurrency = "5-10")
    public void receive(Message 

你可能感兴趣的:(java,MQ,互联网)