微服务框架 SpringCloud微服务架构 服务异步通讯 52 惰性队列 52.2 惰性队列

news2024/11/24 4:33:21

微服务框架

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】

服务异步通讯

文章目录

      • 微服务框架
      • 服务异步通讯
      • 52 惰性队列
        • 52.2 惰性队列
          • 52.2.1 惰性队列
          • 52.2.2 总结

52 惰性队列

52.2 惰性队列

52.2.1 惰性队列

从RabbitMQ的3.6.0版本开始,就增加了Lazy Queues的概念,也就是惰性队列

惰性队列的特征如下:

  • 接收到消息后直接存入磁盘而非内存【传统的消息默认就是在 内存】
  • 消费者要消费消息时才会从磁盘中读取并加载到内存
  • 支持数百万条的消息存储

而要设置一个队列为惰性队列,只需要在声明队列时,指定x-queue-mode属性为lazy即可。可以通过命令行将一个运行中的队列修改为惰性队列:

在这里插入图片描述

用SpringAMQP声明惰性队列分两种方式:

  • @Bean的方式:

在这里插入图片描述

  • 注解方式:

在这里插入图片描述

试试@Bean 的

在消费者中新来 一 个配置类

package cn.itcast.mq.config;

import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.QueueBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * ClassName: LazyConfig
 * date: 2022/11/9 21:33
 *
 * @author DingJiaxiong
 */

@Configuration
public class LazyConfig {

    //惰性队列
    @Bean
    public Queue lazyQueue(){

        return QueueBuilder.durable("lazy.queue")
                .lazy()
                .build();
    }

    //普通队列
    @Bean
    public Queue normalQueue(){

        return QueueBuilder.durable("normal.queue")
                .build();
    }


}

OK,直接运行消费者服务

查看RabbitMQ 的 控制台

在这里插入图片描述

OK。两个队列都创建 完成 了

编写发送消息的测试方法

@Test
public void testLazyQueue() throws InterruptedException {

    for (int i = 0; i < 1000000; i++) {
        //1. 准备消息
        Message message = MessageBuilder.withBody("Hello,Lazy!!!!".getBytes(StandardCharsets.UTF_8))
                .setDeliveryMode(MessageDeliveryMode.NON_PERSISTENT)
                .build();

        //2. 发送消息
        rabbitTemplate.convertAndSend("lazy.queue", message);
    }

}

@Test
public void testNormalQueue() throws InterruptedException {

    for (int i = 0; i < 1000000; i++) {
        //1. 准备消息
        Message message = MessageBuilder.withBody("Hello,Lazy!!!!".getBytes(StandardCharsets.UTF_8))
                .setDeliveryMode(MessageDeliveryMode.NON_PERSISTENT)
                .build();

        //2. 发送消息
        rabbitTemplate.convertAndSend("normal.queue", message);
    }

}

直接两个测试方法

在这里插入图片描述

查看RabbitMQ 控制台

在这里插入图片描述

我这峰值也太低了

在这里插入图片描述

服务器不行

点进Lazy队列

在这里插入图片描述

可以看到,它压根儿就没进内存

再看看normal

在这里插入图片描述

都在内存里面

【快停了,着不住】

在这里插入图片描述

还好我这性能不行,发半天了 才4 万

52.2.2 总结

消息堆积问题的解决方案?

  • 队列上绑定多个消费者,提高消费速度
  • 给消费者开启线程池,提高消费速度
  • 使用惰性队列,可以再mq中保存更多消息

惰性队列的优点有哪些?

  • 基于磁盘存储,消息上限高
  • 没有间歇性的page-out,性能比较稳定

惰性队列的缺点有哪些?

  • 基于磁盘存储,消息时效性会降低
  • 性能受限于磁盘的IO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【BTC】Fork

区块链中fork的分类&#xff1a; state fork&#xff1a; 两个节点差不多同一个时候挖到了矿&#xff0c;就会出现一个临时性的分叉。 forking attack&#xff08;deliberate fork&#xff09;&#xff1a;也是属于对比特币这个区块链当前的状态产生的意见分歧&#xff0c;只不…

汇编语言笔记——汇编程序开发、汇编大作业

文章目录传送门汇编程序开发汇编代码初步实践dos虚拟机与挂载实模式Hello World代码解析汇编链接重新汇编与批处理反汇编与debug保护模式Hello WorldVS2017masm32环境配置汇编基础语言概述汇编环境汇编语言语句格式常用伪指令数据定义符号定义操作符\$OFFSET算术操作符逻辑操作…

【基础】RabbitMQ 基础

RabbitMQ 基础RabbitMQ 基本介绍RabbitMQ 基本概念ConnectionChannelVirtual HostQueueExchangedirectfanouttopicheadersRabbitMQ 基本介绍 RabbitMQ 是使用 Erlang 语言开发的基于 AMQP 协议来实现的开源消息队列系统。 RabbitMQ 的特点&#xff1a; 灵活路由&#xff1a;E…

社招前端二面react面试题整理

解释 React 中 render() 的目的。 每个React组件强制要求必须有一个 render()。它返回一个 React 元素&#xff0c;是原生 DOM 组件的表示。如果需要渲染多个 HTML 元素&#xff0c;则必须将它们组合在一个封闭标记内&#xff0c;例如 <form>、<group>、<div&g…

什么是数据标注,它的用途是什么?

什么是数据标注&#xff1f; 从本质上讲&#xff0c;数据标注是对计算机视觉或自然语言处理 (NLP)可识别的材料内容进行标记的过程。当我们标记或标注这些类型的数据时&#xff0c;它们变得更容易输入算法或编程以通过 NLP 进行解释。 得益于数据标注&#xff0c;人工智能 (…

【Vue】Vue项目打包上线流程--20221219

Vue项目打包上线流程 我的链接https://blog.csdn.net/m0_46629123/article/details/128371149 1.打包 npm run build 2.准备服务器 1.准备demo文件夹&#xff0c;并CMD输入npm init 2.CMD输入npm i express 3.新建并编辑server.js server.js const express require(…

电动汽车对系统运行的影响(Matlab实现)

目录 0 写在前面 1 插式电动车介绍 2 全系统 PEV 充电需求估算 2.1 旅行模式模型 2.2 能源消耗模型 2.3 电力消耗模型 3 单个 PEV 充电设施需求估算 4 PEV充电站需求估算网络 5 电动汽车对电力系统影响的评估 6 系统模型 6.1 结果 6.2 Matlab代码 0 写在前面 在不久…

论文笔记High-Resolution Image Synthesis with Latent Diffusion Models

普通的扩散模型在像素空间操作&#xff0c;运算复杂度较高。为了保证在低资源下训练扩散模型&#xff0c;并保留扩散模型的质量和灵活性&#xff0c;该论文使用预训练的自编码器得到隐含空间&#xff0c;并在隐含空间中训练扩散模型。另一方面&#xff0c;该论文使用cross-atte…

设计模式原则 - 里氏替换原则

一 背景&#xff1a; 里氏替换原则是针对继承的。介绍前先聊聊继承性的特点 继承优势 提高代码的复用性&#xff08;每个子类有拥有父类的属性和方法&#xff09;提高代码的可扩展性 继承劣势 继承是侵入性的&#xff08;只要继承&#xff0c;就必须拥有父类的属性和方法&…

齐鲁转债上市价格预测

齐鲁转债基本信息转债名称&#xff1a;齐鲁转债&#xff0c;评级&#xff1a;AAA&#xff0c;发行规模&#xff1a;80.0亿元。正股名称&#xff1a;齐鲁银行&#xff0c;今日收盘价&#xff1a;4.28&#xff0c;转股价格&#xff1a;5.87。当前转股价值 转债面值 / 转股价格 *…

endo BCN-PEG4-COOH,endo BCN-四聚乙二醇-羧酸

中文名&#xff1a;endo BCN-四聚乙二醇-羧酸 英文名&#xff1a;endo BCN-PEG4-acid CAS号&#xff1a;1881221-47-1 分子式/分子量&#xff1a;C22H35NO8/441.5 结构式 溶解性&#xff1a;溶于大部分有机溶剂&#xff0c;如&#xff1a;DCM、DMF、DMSO、THF等等&#…

公务员备考(四十) 图推提升

第一章 平面专题总结 一、线总结 1、曲线直线 曲直图形判断原则:有曲则为曲,无曲才为直。阴影图形不讨论曲直性。 曲直规律图形特点:a.纯直线曲线图形;b.简笔画实物图形;c.单区域简单图形;d.内外结构图形 2、平行线(含回旋折线) a.轮廓自带平行线条;b.N字型、Z字…

Vs Code的使用

在上一章中有使用到Vs Code但是没有相关的介绍。 什么是Vs Code&#xff1f; 1、vscode是Microsoft公司在美国的一个项目&#xff1a;一个跨平台的源代码编辑器&#xff0c;用于在Mac OS X&#xff0c;Windows和Linux上运行的现代Web和云应用程序。通俗地说&#xff0c;是一款…

MapReduce案列-数据去重

文章目录一&#xff0c;案例分析&#xff08;一&#xff09;数据去重介绍&#xff08;二&#xff09;案例需求二&#xff0c;案例实施&#xff08;一&#xff09;准备数据文件&#xff08;1&#xff09;启动hadoop服务&#xff08;2&#xff09;在虚拟机上创建文本文件&#xf…

最新前端面试总结

介绍 plugin 插件系统是 Webpack 成功的一个关键性因素。在编译的整个生命周期中&#xff0c;Webpack 会触发许多事件钩子&#xff0c;Plugin 可以监听这些事件&#xff0c;根据需求在相应的时间点对打包内容进行定向的修改。 一个最简单的 plugin 是这样的: class Plugin{// …

自动驾驶CarSim和Simulink联合仿真的完美攻略!

作者 | 车路慢慢 仿真秀科普作者 导读&#xff1a;大家好&#xff0c;我叫李慢慢&#xff0c;仿真秀专栏作者&#xff0c;某汽车主机厂汽车仿真工程师&#xff0c;正在筹备转岗。自2020年起&#xff0c;我就在仿真秀App分享ANSA教程和攻略,并学习自动驾驶仿真。 中汽院智能网…

如何通过手机APP在线监控西门子PLC的运行状态

随着工业生产、制造环节的不断神话&#xff0c;工业设备越来越精细复杂&#xff0c;借助PLC实现的自动化控制技术被广泛的应用于工业领域中&#xff0c;具备丰富的应用场景。在物联网和无线通信技术的发展下&#xff0c;越来越多的工业企业系统通过手机APP监控现场PLC的运行状态…

《计算机视觉技术与应用》重点复盘

系列文章目录 《计算机视觉技术与应用》-----第二章 图像处理基础 《计算机视觉技术与应用》-----第三章 图形用户界面 《计算机视觉技术与应用》-----第四章 图像变换 《计算机视觉技术与应用》-----第五章 边缘和轮廓 《计算机视觉技术与应用》-----第六章 边缘和轮廓 …

使用Win32 API 渲染一个标准界面元素

有这么一个Win32 API&#xff0c;名叫 DrawFrameControl&#xff0c;它可以用来在你的自定义控件上渲染一些标准的窗口元素。 下面我们举一个简单的例子来说明。 在下面的例子中&#xff0c;我们会使用这个 API 函数来绘制一个已选择的单选按钮。具体方法是&#xff0c;在我们…

常见面试题(随机)

常问的几个方面 1.MySQL 存储引擎、事务、锁、索引 2.Redis 数据类型、过期策略、淘汰策略、缓存穿透、缓存击穿、缓存雪崩、分布式锁 3. Spring Spring Ioc、Spring AOP、Spring MVC MYSQL 存储引擎 事务 事务的特性 原子性、一致性、隔离性、持久性事务的隔离性并发异常:…