当前位置:   article > 正文

RabbitMQ消息堆积方案处理_rabbitmq消息积压如何解决

rabbitmq消息积压如何解决

消息队列中,消息堆积是生产环境中的需要考虑的问题,一旦消息产生积压,来不及消费,可能会导致MQ服务器宕机,而解决消息积压有这样一些方案解决:

1.增加消费者数量

可以根据业务情况适当添加多台服务器部署消费者服务实例,消费者数量增加,可以有效提高消息的消费速度,但这需要考虑服务器成本

2.单个消费者中增加线程池来异步处理消息

单个消费者服务实例中,可以整合线程池,将消息的消费任务提交给线程池中的多个线程进行处理。但也存在需要考虑的问题,当任务处理耗时比较长,任务比较多的情况下,线程会处于频繁切换的状态,这对于CPU来说,是一种资源浪费,而且任务数量多,可能会导致线程池中的线程都处于使用状态,任务阻塞队列达到瓶颈,这时候会触发拒绝策略,对于不重要的消息的消息可以进行丢弃,重要的消息可以交给主线程处理,这时候又回到原始状态。因此单个消费者增加线程池使用于任务耗时比较短,线程池可以很好处理消息任务的情况。

3.采用RabbitMQ提供的惰性队列

在RabbitMQ中,提供了一种惰性队列,所谓的惰性队列是将消息从内存快刷到磁盘,在牺牲性能的情况下保证MQ不会因为消息堆积而导致内存爆满。并且性能稳定,支持百万消息的磁盘快刷。定义惰性队列也很简单,只需要添加lazy熟悉即可。

  1. @Bean
  2. public Queue lazyQueue() {
  3. return QueueBuilder
  4. .durable("lazy.queue")
  5. .lazy()
  6. .build();
  7. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/440189
推荐阅读
相关标签
  

闽ICP备14008679号