rabbitmq学习记录
同步和异步
(1)同步(按照流程一步一步做)使用openfengin传统的交互
- 响应时间长,需要将每一步的时间加起来。
- 如果一个环境出错了,整个就报错了。
- 并发压力大,前边的步骤有多大的并发量,后续就需要承担多大的并发量。
(2)异步(微服务A无需等待微服务B,之间返回,微服务B可以等他空闲的时候来消费)
- 响应时间相对更短,无需等待服务B执行完成就返回响应。
- 可以通过调节参数,减少后续服务的并发量。
削峰填谷:把高峰期的任务转移到低谷期执行。
qps:kafka>rocketmq>rabbitmq>activemq
rabbitmq有可靠的消息确认机制,并且吞吐量还行10w左右。
基础
消息发送端:生产者 消息消费端:消费者
TCP连接(三握四挥)
为了连接复用,建立了channel。
broker示例:搭建一个rabbitmq就叫一个broker,broker分成很多个虚拟机,
1.流程
生产者---------》channel---------》exchange:交换机(中转消息)--------》queue:队列(暂存消息)---------》channel-----------》消费者
2.交换机怎么知道把消息存放在那个队列中?
交换机通过binding队列
5672客户端交互 15672图形化界面交互
3.rabbitmq的使用模式
默认的交换机:
(1)简单工作队列模式:生产者–(队列)----消费者
(2)工作队列:生产者—默认交换机----(队列)----多个消费者(轮询竞争)
(3)发布订阅模式:生产者----fanout类型交换机-----多个队列-----指定消费者监听
fanout交换机,广播,将消息发布到多个队列。多个消费端对于队列的关系是竞争关系。路由键是空。
交换机类型:fanout广播、diret定向、topic通配符
(4)路由模式:生产者----direct交换机-----使用多个不同的ronuting key绑定队列-----多个消费者
交换消息的时候,指定交换机、路由键。channel和队列绑定,指定路由键。
(5)主题模式:生产者----topic交换机-----使用多个不同的ronuting key绑定队列-----多个消费者
在路由模式的基础上,使用通配符匹配。
使用
可靠性
故障:消息没有存放在消息队列,保存在队列(内存)服务器宕机丢失,消息没有消费成功。
1.消息没有发送到消息队列
解决
在生产者端进行确认,如果失败就重试。
(1)生产者端交换机和队列的确认机制:配置文件开启确认机制+配置类对mq模板增强。
(2)备份交换机制:目标交换器故障,备份交换机可以执行目标交换机的业务,或者做日志通知运维人员故障。在创建交换器的时候,可视化界面可以指定备份交换机(需要使用fanout类型)。
2.消息队列服务器宕机,内存数据丢失。
将消息持久化,默认是持久化的
3.消费端宕机或者消息没有消费成功
消费成功,消费端给mq返回ACK信息,消息队列删除该消息。
消费失败,消费端给mq返回NACK信息,重试(消费端的接口支持幂等性)。
配置手动确认返回ack通知。
削峰填谷
yml配置prefetch参数(每次取出的消息数量)
死信
消费者拒收消息+requeue=false(不把消息放到原目标队列)
消息队列溢出:消息放满了还放
消息超时(rabbitmq服务器会自动删除过期的消息,可以在创建队列时指定该队列存放消息的过期时间,也可以对消息指定过期时间。)
解决:
丢弃、入库、监听进入死信队列:消费者监听死信队列,做日志报警、人工干预。
延迟队列
消息超时时间+死信队列:某一个消息队列不监听,设置一个超时时间。超时之后进入死信队列,被消费者捕获到。
事务消息
当生产者代码出现错误的时候发送消息就会回滚,注解@RollBack(ture)。默认开启回滚事务。
相关文章:
rabbitmq学习记录
同步和异步 (1)同步(按照流程一步一步做)使用openfengin传统的交互 响应时间长,需要将每一步的时间加起来。如果一个环境出错了,整个就报错了。并发压力大,前边的步骤有多大的并发量ÿ…...

MySQL数据库基础:约束
💎我的主页:MySQL 💎1. 约束的概述 约束是作用于表中字段的规则,用于限制存储在表中的数据 目的:保证数据库中数据的正确性,有效性和完整性 💎2. 约束的分类 💎2.1 非空约束 非空…...
Java设计模式和AOP编程
Java 六大设计原则;Java 23种设计模式(在此介绍三种设计模式) Java设计模式 单例模式 应用场景:spring中bean的作用域用的就是单例模式 //基本的单例模式————懒汉式 public class student {//3.创建static修饰的成员变量p…...
【扒代码】data.py
数据增强函数 import torch from torchvision.transforms import functional as TVFdef tiling_augmentation(img, bboxes, density_map, resize, jitter, tile_size, hflip_p):# 定义一个辅助函数,用于根据给定的概率水平翻转张量def apply_hflip(tensor, apply)…...
【时时三省】unity test 测试框架 介绍(适用于C语言进行测试的)
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 目录 1,关于 unity test 测试框架的介绍 2,测试框架关于源码的介绍 3,使用unity test测试C代码 4,常用断言举例 1,关于 unity test 测试框架的介绍 unity test 是 ThrowTheSwitch.org 的一个主要工程。它…...

那些你应该掌握的linux命令
一、路径授权 要给 a 用户 b 路径的所有操作权限,可以使用以下命令: sudo chown -R a:a /b sudo chmod -R 770 /b1.sudo chown -R a:a /b chown 命令用于更改文件或目录的所有者和所属组。-R 选项表示递归地应用于目录及其内部的所有文件和子目录。a:a 表示将所有…...

系统出现高CPU可能风险因素整理
文章目录 死循环无限递归序列化加解密正则表达式计算密集型任务大流量Full GC资源竞争/死锁I/O阻塞外部接口调用 死循环 死循环是最常见的原因之一。当代码中存在无穷循环(例如在多线程环境下的HashMap线程不安全问题或分页查询条件不明确导致的无限循环࿰…...
前端技术 -- 动画效果之GSAP作用与使用示例
GSAP(GreenSock Animation Platform)简介 GSAP 是一个高性能、跨平台的 JavaScript 动画库,广泛用于网页动画的制作。它提供了丰富的 API,使得开发者可以轻松创建复杂的动画效果,并且在不同浏览器和设备上都能获得一致…...

C口一拖二数据线:解锁数字生活的便捷新篇章LDR6020
添加图片注释,不超过 140 字(可选) 在科技日新月异的今天,我们的电子设备如同生活中的伴侣,无论是工作、学习还是娱乐,都离不开它们的陪伴。随着Type-C接口逐渐成为众多高端智能手机、平板电脑、笔记本电脑…...

CH07_数据绑定
第7章:数据绑定 本章目标 理解路由事件 掌握键盘输入事件 掌握鼠标输入事件 掌握多点触控输入事件 数据绑定概述 什么是数据绑定 将WPF中的至少一个带有依赖项属性的两个对象的两个属性进行绑定,使某一个依赖项属性可以更新和它绑定的属性的功…...

24.python基础(8.8)
python基础 1.搭建环境python3 1.查看是否有安装python [rootpython1 ~]# yum list installed |grep python 2.安装python3 [rootpython1 ~]#yum -y install python3 [rootpython1 ~]#python --version #查看版本信息 最新安装3.12,可以使用源码安装 开…...

【论文阅读】MobileNetV4 - Universal Models for the Mobile Ecosystem
文章目录 摘要一、介绍二、相关工作三、与硬件无关的帕累托效率四、通用倒置瓶颈五、移动MQA六、MNv4模型的设计6.1 为增强的体系结构改进NAS6.2 MNv4模型的优化 7. 结果7.1 ImageNet分类7.2 COCO目标检测 8. 强化蒸馏配方9. 结论 MobileNetV4 - 移动生态系统的通用模型 摘要 …...
大模型日报 2024-08-07
大模型日报 2024-08-07 大模型资讯 [Figure AI 把「终结者」造出来了] 简介:Figure 发布新一代人形机器人 Figure 02,具多种功能,能实时对话、自主执行任务,导航用 VLM,电池续航提升,机械手先进,…...
区块链ddos防护怎么做
区块链ddos防护怎么做?在区块链这一新兴技术的浪潮中,我们见证了无数创新应用的诞生与繁荣。然而,在这片充满机遇的蓝海中,也潜藏着不容忽视的暗流——分布式拒绝服务攻击(DDoS)。DDoS攻击,如同网络世界的…...

在Linux中认识pthread库
int *pnullptr; pnullptr; *pnullptr; 指针变量做右值也是变量拥有空间。去承装数据。 *p代表指针所指向的空间,及0号地址,及往虚拟地址的0号地址处写8个字节的数据,全部写为0. (此操作不允许) 进程和线程的关系如…...

LVS 负载均衡
目录 LVS 体系结构 LVS 相关概念术语 lvs 集群常见类型 实验一: LVS NAT模式 LVS NAT特性 实验二: LVS DR模式 LVS DR特性 LVS是Linux virtual server的缩写,是一个高性能的、开源的负载均衡器,它运行于Linux操作系统之上…...

在Excel中启用宏 (~ ̄▽ ̄)~
一、启用宏 打开任意Excel,点击屏幕左上角的文件选项,然后选择Excel选项窗口。在Excel选项窗口中,选择信任中心按钮;在信任中心设置窗口中,选择宏设置,启用所有宏(不推荐,潜在风险&a…...

连接投影仪/显示器只能扩展不能复制的解决方案
原文章:https://iknow.lenovo.com.cn/detail/121481 故障现象: 笔记本外接投影仪/显示器后,笔记本屏幕有显示,但投影仪却只有背景或没有显示; 原因分析: 此现象多发生在双显卡机型上,笔记本屏…...

数据库基础知识
数据库基础知识 主流的数据库连接MySQL理解mysql和mysqld和数据库简单对数据库操作MySQL构架SQL分类存储引擎总结 主流的数据库 SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。Oracle: 甲骨文产品,适合大型项目…...
java JVM 锁消除
Java虚拟机 (JVM) 中的锁消除 (Lock Elimination) 是一种编译时优化技术,用于减少或完全去除不必要的同步操作。锁消除可以显著提高程序的性能,尤其是在多线程环境中。下面详细介绍锁消除的工作原理和技术细节。 锁消除的目的 锁消除的目标是在编译阶段…...
java 微服务中,微服务相互调用 feign 和flux 如何选择
在 Java 微服务中,Feign 和 Flux(通过 WebClient 实现)是两种不同的服务间调用方式,主要区别体现在编程模型、通信机制和适用场景上。 1. 编程模型 FeignFlux (WebClient)同步阻塞式:基于传统 Servlet 模型࿰…...

AWTK 嵌入式Linux平台实现多点触控缩放旋转以及触点丢点问题解决
前言 最近涉及海图的功能交互,多点触摸又开始找麻烦。 在PC/Web平台awtk是通过底层的sdl2库来实现多点触摸,但是在嵌入式Linux平台,可能是考虑到性能原因,awtk并没有采用sdl库来做事件处理,而是自己实现一个awtk-lin…...

具有离散序列建模的统一多模态大语言模型【AnyGPT】
第1章 Instruction 在人工智能领域、多模态只语言模型的发展正迎来新的篇章。传统的大型语言模型(LLM)在理解和生成人类语言方面展现出了卓越的能力,但这些能力通常局限于 文本处理。然而,现实世界是一个本质上多模态的环境,生物体通过视觉、…...

异步日志监控:FastAPI与MongoDB的高效整合之道
title: 异步日志监控:FastAPI与MongoDB的高效整合之道 date: 2025/05/27 17:49:39 updated: 2025/05/27 17:49:39 author: cmdragon excerpt: FastAPI与MongoDB整合实现日志监控系统的实战指南。首先配置MongoDB异步连接,定义日志数据模型。核心功能包括日志写入接口、聚合…...

Real SQL Programming
目录 SQL in Real Programs Options Stored Procedures Advantages of Stored Procedures Parameters in PSM SQL in Real Programs We have seen only how SQL is used at the generic query interface --- an environment where we sit at a terminal and ask queries …...
【AI-安装指南】Redis Stack 的安装与使用
目录 一、Redis Stack 的介绍 二、安装方式 2.1 安装 2.2 添加依赖 2.3 设置配置信息 2.4 Redis 添加向量数据 2.5 查询向量数据 一、Redis Stack 的介绍 传统的 Redis 服务是不能存储向量的,因此我们需要首先安装 Redis Stack,而 Windows 电脑安 装 Redis Stack,官方…...
前端面经 React常见的生命周期
初始化阶段 constructor state的初始化,防抖节流的绑定getDerivedStateFromProps 静态函数 当作纯函数使用 传入props和state,合并成一个新的statecomponentWillMount 组件如果有getDrivedStatefromprops不会执行 针对一些接口的预请求时使用rendercomp…...

Python打卡第38天
浙大疏锦行 作业: 了解下cifar数据集,尝试获取其中一张图片 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader , Dataset # DataLoader 是 PyTorch 中用于加载数据的工具 from torchvision im…...

开源第三方库发展现状
摘要:当前,开源第三方库生态正呈现爆发式增长趋势。GitHub 目前已托管超过 4.2 亿个代码仓库,远超早期统计的 1 亿规模,显示出开发者社区的活跃度持续攀升。同时,37 个主流包管理器所维护的开源组件数量可能已达到数千…...

【新品发布】嵌入式人工智能实验箱EDU-AIoT ELF 2正式发布
在万物互联的智能化时代,将AI算法深度植入硬件终端的技术,正悄然改变着工业物联网、智慧交通、智慧医疗等领域的创新边界。为了助力嵌入式人工智能在教育领域实现高质量发展,飞凌嵌入式旗下教育品牌ElfBoard,特别推出嵌入式人工智…...