rabbitMQ(七)实战-限流

本文介绍了RabbitMQ中消费者端限流的重要性,以防止大量消息瞬间涌入导致系统压力过大。通过Channel的basicQos方法实现限流,详细解析了方法参数,并提供实战代码示例,展示如何设置限流以确保消息逐条处理,避免消费者一次性接收过多消息。
摘要由CSDN通过智能技术生成

一,什么是限流?为什么要限流?

rabbitMQ的限流,就是指在消费者端,限制消费者接收消息的数量。

之所以要限制消费者的流量,是因为,假设Rabbitmq 服务器积压了很多很多条消息,当我们打开一个消费者,巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多消息。类似于许多请求都到达数据库一样,会给我们的系统造成很大的压力,影响系统的性能,严重甚至会导致系统崩溃。

那为什么要在消费者端限流呢,不在生产者端限流?因为,生产者消息的产生,是用户的行为,我们无法去约束它。例如,下单的时候,会产生一条确认下单是否超时的消息,每产生一条消息,都是用户进行了一个下单的操作。

 

二,基础知识及实现方法介绍

主要用Channel类的basicQos方法来实现限流的效果,方法介绍如下:

channel.basicQos()

channel.basicQos(int prefetchSize,int prefetchCount,boolean global)

参数:

prefetchSize:消息的大小

prefetchCount:会告诉RabbitMQ不要同时给一个消费者推送多于N个消息,即一旦有N个消息还没有ack,则该consumer将block掉,直到有消息ack

global:是否将上面设置应用于channel,简单点说,就是上面限制是channel级别的还是consumer级别

注意,prefetchSize和golobal参数还没有实现。

Cha

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值