RabbitMQ 第二天 高级 7 RabbitMQ 高级特性 7.3 消费端限流
创始人
2024-04-30 12:48:07

RabbitMQ

【黑马程序员RabbitMQ全套教程,rabbitmq消息中间件到实战】

文章目录

      • RabbitMQ
      • 第二天 高级
      • 7 RabbitMQ 高级特性
        • 7.3 消费端限流
          • 7.3.1 削峰填谷
          • 7.3.2 代码编写
          • 7.3.3 小结

第二天 高级

7 RabbitMQ 高级特性

7.3 消费端限流

7.3.1 削峰填谷

【回顾一下 我们之前谈到 的MQ 的作用 → 削峰填谷】

在这里插入图片描述

这样一个 A系统 ,原本它每秒 最大只能处理 1000 请求,

这个时候,由于某些原因,当 用户请求 量 瞬间增多, 它就承载不了 了

比如“秒杀 ” 活动 啥的,

在这里插入图片描述

现在 每秒来了 5000 个请求,如果全部直接 打到 A 系统上,那么它肯定就会 崩溃 或者说直接宕机,从而 就会影响 整个业务 的正常运转。

在这里插入图片描述

解决方案就是 利用 MQ 加一层,A 系统每秒从 MQ 中 拉自己能够承受的请求 数量 进行处理。这样 就能保证 A 系统的稳定性。

每秒拉 1000个,换句话说,就是 做一个 “限流” 的处理。

而且 这对 系统维护升级 也非常有帮助

7.3.2 代码编写

【修改消费端】

直接来一个 新的监听类 QosListener

package com.dingjiaxiong.listener;import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
import org.springframework.stereotype.Component;/*** ClassName: QosListener* date: 2022/11/16 21:16** @author DingJiaxiong*//*** Consumer 限流机制* 1. 确保ack 机制为手动确认。* 2. listener-container配置属性 prefetch【这个的具体数值 就是能够拉取的消息最大数目】*      比如prefetch = 1 → 表示 消费端每次从 MQ 拉取一条消息进行消费,直到手动 确认消费完毕后,才会继续拉取下一条消息*/
@Component
public class QosListener implements ChannelAwareMessageListener {@Overridepublic void onMessage(Message message, Channel channel) throws Exception {// 1. 获取消息System.out.println(new String(message.getBody()));// 2. 处理业务逻辑// 3. 签收channel.basicAck(message.getMessageProperties().getDeliveryTag(),true);}
}

spring 核心配置文件修改




OK,直接启动消费端

在这里插入图片描述

它会一直等待

OK,发送10条消息

@Test
public void testSend() {for (int i = 0; i < 10; i++) {// 发送消息rabbitTemplate.convertAndSend("test_exchange_confirm", "confirm", "message confirm...");}}

为了效果更明显,先把消费端 的ack 注掉

在这里插入图片描述

现在 预期结果就是消费端只会拉取一条消息,剩余9 条会留在 队列里,

试试

在这里插入图片描述

OK,可以看到发送端 已经完成了 10 条消息的 发送,看看 消费端 的日志

在这里插入图片描述

没毛病,只拿到 了 一条消息

查看管控台

在这里插入图片描述

没毛病

直接停掉消费端

在这里插入图片描述

那条没被 确认 的消息就退回去了

现在 来个操作, 把拉取限制 注掉

在这里插入图片描述

OK, 再次运行消费端

在这里插入图片描述

可以看到 10 条消息全被 拉过来了

在这里插入图片描述

而且全部是 未被 签收的状态,没问题,现在还原

在这里插入图片描述

一次消费一条消息

在这里插入图片描述

且进行一个签收 的操作

再次运行消费端

在这里插入图片描述

OK, 现在就是 真的被消费掉了 ,查看管控台

在这里插入图片描述

嗯,10 条都被消费了 【如果加上一个 睡眠,效果 会更明显】

【这就是 消费端 限流的配置】

7.3.3 小结
  • 消费端的确认模式一定为手动确认。acknowledge=“manual”

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
如何吸引顾客 怎样吸引顾客加入... 如何激活群的顾客活跃度,是商家在运营过程中绕不开的事情。当新用户来到商家的私域流量群时,商家一般会采...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
地铁怎么买票 乘坐地铁如何买票 目前,上海轨道交通全网络运营里程已增至831公里,线路增至20条,与此同时,轨道交通的支付方式也日益...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...