- 博客(207)
- 收藏
- 关注
原创 【Spring】Bean的生命周期,部分源码解释
Bean 生命周期概述 Bean 的生命周期包含 5 个阶段: 实例化:通过构造函数创建对象 属性赋值:完成依赖注入(如 @Autowired) 初始化: 执行 Aware 接口回调(BeanNameAware 等) 调用初始化方法(@PostConstruct、init-method) 执行 BeanPostProcessor 后置处理 使用 Bean 销毁:触发 @PreDestroy、DisposableBean 或 destroy-method 执行流程 源码通过 doCreateBean() 方法
2025-08-03 21:42:30
304
原创 【Spring】Bean的作用域(单例、多例、请求、会话、Application)
本文介绍了Spring中Bean的六种作用域及其使用场景。重点展示了单例(singleton)和原型(prototype)作用域的区别:单例模式下多次获取的是同一个实例,而原型模式每次都会创建新实例。通过代码示例演示了如何通过@Scope注解配置不同作用域,包括请求作用域(request)、会话作用域(session)和全局作用域(application)等Web环境特有的作用域。测试结果表明,单例作用域下对象地址相同,属性修改会相互影响;而原型作用域每次都会创建新对象。文章还提到Web环境特定作用域需要配
2025-08-03 21:41:58
318
原创 【Spring】日志配置、日志持久化、配置文件分割、日志格式
日志配置摘要 文章介绍了Spring Boot日志系统的配置方法,主要包括: 日志级别设置:通过logging.level配置不同级别的日志输出 日志持久化:支持配置文件名或目录两种方式将日志保存到文件 日志分割:设置文件大小阈值自动分割日志文件 日志格式:可自定义控制台和文件日志的显示格式 简化日志输出:使用Lombok的@Slf4j注解替代LoggerFactory.getLogger 关键配置项包括日志级别、文件路径、分割策略和输出格式等,支持通过application.yml灵活调整日志行为。文章还
2025-07-29 20:35:46
661
原创 【Spring】日志级别的分类和使用
日志级别用于区分信息的严重性,帮助开发者高效筛选关键日志。常见的级别从高到低依次为:FATAL(致命系统错误)、ERROR(高优先级错误)、WARN(警告)、INFO(常规信息)、DEBUG(调试)、TRACE(详细追踪)。SpringBoot默认使用Logback框架,其日志输出级别默认为INFO,因此仅显示INFO及以上级别的日志。开发人员需根据经验合理设置级别,错误的级别设定可能影响问题判断。FATAL级别表示系统不可用需紧急处理,而ERROR日志较多未必代表系统问题。
2025-07-29 20:35:13
706
原创 【Spring】日志框架介绍、门面模式和SLF4J框架介绍
SLF4J是一个日志门面框架,它通过门面模式为各种日志实现(如Log4j、Logback)提供统一的API接口。不同于具体日志实现,SLF4J只是一个抽象层,需要配合具体日志框架使用。门面模式通过定义高层接口简化了子系统(具体日志框架)的调用,具有降低系统耦合、提高灵活性和安全性的优点。使用SLF4J可以避免项目中多套日志框架共存带来的维护问题,使应用程序代码独立于具体日志实现。典型的日志输出包含时间、级别、进程ID、线程名、Logger名和日志内容等信息。
2025-07-28 09:01:56
870
原创 【Spring】日志的介绍和用途
日志是软件开发中重要的调试和分析工具,不仅用于定位问题,还具有系统监控、数据采集、安全审计等功能。相比简单的System.out.print,专业的日志框架如Slf4j能提供更丰富的日志信息。在SpringBoot项目中,可以通过LoggerFactory获取日志对象,使用info()等方法记录日志,为系统运维、数据分析和安全审计提供支持。日志能记录用户操作、系统状态等关键信息,有助于问题追溯、性能监控和合规审计,是项目开发中不可或缺的组成部分。
2025-07-26 09:35:43
721
原创 【Spring】事务传播机制使用各种场景演示
本文主要介绍了Spring事务的四种传播机制及其使用场景。重点讲解了REQUIRED和REQUIRES_NEW两种常用传播机制:REQUIRED是默认值,多个方法共享同一事务,任一方法异常会导致全部回滚;REQUIRES_NEW每次创建新事务,互不影响。此外还演示了NEVER(不支持事务)和NESTED(嵌套事务)的特性,特别是NESTED通过捕获异常可实现部分事务回滚,与REQUIRED的全局回滚形成对比。通过代码示例展示了不同传播机制下事务的执行效果,帮助理解Spring事务管理的核心机制。
2025-07-26 09:35:03
654
原创 【Spring】@Transcational的作用和使用细节、rollbackFor
Spring的@Transactional注解提供声明式事务管理,只需在方法或类上添加该注解即可自动管理事务:方法执行前开启事务,执行后提交事务,出现未捕获异常时回滚。文章通过用户注册示例演示了事务的基本使用,并指出异常捕获会导致事务提交而非回滚。介绍了两种回滚方式:重新抛出异常或手动调用setRollbackOnly()。重点解析了@Transactional的三个关键属性:rollbackFor(指定触发回滚的异常类型)、isolation(隔离级别)和propagation(传播机制),并通过代码示例
2025-07-25 09:40:03
589
原创 【Spring】事务的隔离级别,Spring的事务隔离级别和事务传播机制
本文回顾了MySQL的四种事务隔离级别(读未提交、读提交、可重复读、串行化),并介绍了Spring框架中的五种事务隔离级别和七种事务传播机制。MySQL的隔离级别解决了并发事务的数据一致性问题,而Spring的事务传播机制则处理了事务在方法调用间的传递行为。文章详细说明了每种传播机制的特点,如REQUIRED(默认)、REQUIRES_NEW(创建新事务)等,并通过源码展示了Spring中枚举类的实现方式。最后提到可以通过@Transactional注解的isolation和propagation属性来设置
2025-07-25 09:39:47
636
原创 【Spring】什么是事务,Spring中事务的实现
Spring事务管理摘要:事务是数据库操作的不可分割单元,确保一组操作同时成功或失败。Spring提供编程式和声明式事务管理,前者手动控制事务,后者通过注解自动处理。本文以用户注册为例,演示了事务的必要性(如转账、秒杀系统),并展示了Spring事务的实现方式,包括数据准备、代码示例及事务操作步骤(开启/提交/回滚)。
2025-07-24 11:15:04
753
原创 【Spring AOP】动态代理的实现,JDK(InvocationHandler),CGLib详解
动态代理相比静态代理更灵活,能够在运行时根据需要动态生成代理对象。Java提供了两种实现方式:JDK动态代理和CGLIB动态代理。JDK动态代理通过InvocationHandler接口和Proxy.newProxyInstance()方法实现,但只能代理接口实现类;而CGLIB通过继承方式实现代理,适用于无接口的类,使用MethodInterceptor接口和Enhancer.create()方法创建代理对象。动态代理技术广泛应用于框架开发中,掌握它对理解框架原理很有帮助。
2025-07-24 11:14:51
532
原创 【Spring AOP】代理模式的定义,静态代理的实现
本文介绍了代理模式及其在Spring AOP中的应用。代理模式通过代理类间接访问目标对象,分为静态代理和动态代理两种。静态代理在编译前就确定代理类,灵活性差,需要为每个目标方法手动实现增强逻辑。动态代理则在运行时通过反射机制生成代理类,更加灵活。文章以房屋租赁为例,演示了静态代理的实现过程,并指出其局限性——当接口或业务类修改时,代理类也需同步调整。最后提出动态代理可以解决这一问题,实现一个代理类处理多种业务场景。
2025-07-18 15:13:21
532
1
原创 【Spring AOP】execution表达式,@annotation注解,@MyAspect(自定义注解),切面类
本文介绍了AOP切点表达式的两种主要语法:execution表达式和@annotation表达式。execution表达式通过方法签名匹配,语法包含访问修饰符、返回类型、包名类名方法名及参数等元素,支持通配符*和..进行灵活匹配,并提供了多个示例。@annotation表达式则通过自定义注解匹配无规则方法,详细说明了自定义注解的创建、切面类定义及注解使用步骤。两种方式各有适用场景,execution适合有规则的方法匹配,@annotation适合分散的无规则方法匹配。文章还简要提及了Spring AOP的实
2025-07-15 17:20:13
485
2
原创 【Spring AOP】通知类型,@Pointcut、@Order(切面优先级)
Spring AOP 通知类型与切面实践 本文介绍了Spring AOP的五种通知类型: @Around环绕通知(目标方法前后执行) @Before前置通知(方法前执行) @After后置通知(方法后执行,无论异常) @AfterReturning返回后通知(正常返回后执行) @AfterThrowing异常通知(出现异常后执行) 通过代码示例演示了各种通知的执行顺序和异常场景下的差异,并介绍了@Pointcut注解提取公共切点表达式的方法,以及使用@Order控制多个切面执行顺序的技巧。关键注意点包括环绕
2025-07-13 16:21:32
357
2
原创 【Spring AOP】什么是AOP?切点、连接点、通知和切面
AOP 概述与 Spring AOP 详解 AOP(面向切面编程)是 Spring 框架的第二大核心,是一种面向特定方法编程的思想,通过集中处理某一类问题实现解耦。Spring AOP 是其一种实现方式,相比拦截器能更细致地拦截方法(按包、类、方法等),典型应用如接口耗时统计。 核心概念 切点(Pointcut):定义拦截规则的表达式(如 execution(* com.example.controller.*.*(..)))。 连接点(Join Point):满足切点表达式的方法(如 Controller
2025-07-12 18:02:11
1822
26
原创 【Spring】拦截器详解
摘要:本文介绍了Spring拦截器在实现强制登录功能中的应用。传统方法需要在每个接口中校验Session,导致代码重复且维护困难。通过拦截器可以统一拦截请求并进行Session校验,简化开发流程。文章详细讲解了拦截器的定义(实现HandlerInterceptor接口)、配置(注册路径规则)以及执行流程(preHandle/postHandle/afterCompletion)。特别展示了如何用拦截器实现登录校验功能,通过检查Session中的用户信息来决定是否放行请求。这种方案相比传统方法更加高效、可维护
2025-07-11 17:28:35
1339
11
原创 【MyBatis】动态SQL,<if>、<trim>、<where>、<set>、<foreach>、<include>
本文介绍了MyBatis中常用的动态SQL标签及其用法。主要包括: <if>标签:用于条件判断,处理非必填字段的动态SQL拼接 <trim>标签:结合prefix、suffix等属性,灵活处理多字段动态插入 <where>标签:自动生成WHERE子句,并去除开头多余的AND/OR <set>标签:用于UPDATE语句,动态生成SET部分 <foreach>标签:遍历集合参数,常用于IN条件 <include>标签:抽取重复SQL片段,提
2025-07-10 17:41:53
1028
1
原创 【MyBatis】进行多表查询,#{}和&{}的区别,数据库连接池
本文介绍了MyBatis中的多表查询操作、#{}与${}的区别以及数据库连接池的相关知识。在多表查询部分,通过文章表和用户表的关联查询示例,展示了如何通过SQL和Mapper实现跨表数据获取。#{}采用预编译方式更安全高效,而${}直接拼接SQL存在注入风险。数据库连接池方面,对比了Hikari和Druid两种主流方案,说明连接池在资源复用和性能提升上的优势。最后总结了MySQL开发规范,包括命名规则、必备字段和查询优化建议,强调统一命名、自增主键和避免使用SELECT *等重要实践原则。
2025-07-09 15:07:11
852
6
原创 【MyBatis】XML实现,配置方法和增、删、改、查
MyBatis框架支持注解和XML两种开发方式,简单功能建议使用注解,复杂SQL推荐XML配置。XML方式需要配置数据库连接和编写持久层代码,包括接口定义和XML实现。增删改查操作通过XML标签实现,需注意参数传递、自增ID返回及结果映射问题。查询时字段名与属性名不一致可通过别名、结果映射或开启驼峰命名解决。XML文件需与接口对应,namespace设置为接口全限定名,SQL语句中的id与接口方法名一致。
2025-07-07 20:40:30
912
6
原创 【MyBatis】实现数据库的增、删、改、查
本文介绍了MyBatis中增删改查(CRUD)的基本操作实现。在插入操作中,演示了如何通过@Insert注解实现数据插入,并利用@Options注解获取自增主键;删除操作使用@Delete注解完成;更新操作通过@Update注解实现。重点说明了查询操作中数据库字段与Java对象属性不一致时的三种解决方案:1)通过SQL别名对应属性名;2)使用@Results注解进行结果映射;3)配置自动驼峰转换规则。文中提供了完整的代码示例,包括Mapper接口定义和测试方法,帮助开发者理解MyBatis的基本CRUD操作
2025-07-06 14:43:14
800
6
原创 【MyBatis】什么是MyBatis,怎么配置数据库
MyBatis是一款优秀的持久层框架,简化JDBC开发,主要用于数据库操作。摘要内容如下: MyBatis简介:作为持久化框架,简化程序与数据库交互,更便捷地操作数据库。 基础配置: 添加MyBatis和MySQL驱动依赖 配置数据库连接信息(URL、用户名、密码等) 通过@Mapper接口定义数据库操作方法 核心功能: 使用@Select等注解实现SQL映射 #{parameter}方式传递参数 可配置日志打印SQL执行过程 使用规范: 企业级建表规范(小写字段名、必含时间字段等) 常见问题排查(SQL错
2025-07-02 20:12:26
871
15
原创 【Spring】应用分层,MVC和三层架构的区别和联系,高内聚低耦合
应用分层是一种软件设计思想,将系统划分为不同层次,各层职责明确,协同工作。早期项目通常不分层,但随着业务复杂度增加,会出现逻辑混乱、模块依赖等问题。常见的分层方式包括MVC模式(模型、视图、控制器)和三层次架构(表现层、业务逻辑层、数据层)。二者目标一致,强调高内聚低耦合,但角度不同:MVC侧重数据与视图分离,三层次架构注重各层解耦。分层的好处包括降低依赖、提升复用性、便于维护和标准化开发。企业开发中还需遵循命名规范,如类名用大驼峰、方法名用小驼峰等,确保代码统一性。
2025-06-23 10:19:58
617
原创 [网页五子棋][匹配模块]实现胜负判定,处理玩家掉线
本文摘要: 解决了多例对象Room无法使用@Autowired自动注入的问题,通过在主类保存Spring上下文,在Room构造方法中手动获取依赖对象。 实现了五子棋胜负判定逻辑: 以落子点为中心,检查行、列、对角线是否存在五连珠 采用特定偏移量检查5种可能的连线情况 使用try-catch处理棋盘边界越界情况 判定结果为玩家ID或0(未分胜负) 关键点: 多例对象依赖注入的特殊处理 优化判定算法(只检查相关区域) 完整覆盖四种连线方向(水平、垂直、对角线)
2025-06-04 21:53:18
1183
9
原创 [网页五子棋][匹配对战]落子实现思路、发送落子请求、处理落子响应
本文介绍了五子棋游戏落子功能的实现思路,主要分为客户端和服务器两部分: 客户端点击棋盘时发送落子请求(包括用户ID和坐标),服务器更新内部棋盘状态并进行胜负判定; 服务器维护15x15的二维数组棋盘,其中0表示空位,1和2分别标记两个玩家的落子; 服务器处理流程包括:验证落子位置、更新棋盘、胜负判定、广播响应结果; 客户端收到响应后绘制棋子,避免直接在客户端判定胜负以防止作弊; 服务器需处理断线情况,游戏结束后更新玩家分数并销毁房间。 文中还对比了服务器和客户端棋盘的差异,强调了关键游戏逻辑应在服务器端处理
2025-06-02 23:15:34
1016
9
原创 [网页五子棋][对战模块]处理连接成功,通知玩家就绪,逻辑问题(线程安全,先手判定错误)
摘要: 本文实现了一个游戏房间的连接管理逻辑,通过afterConnectionEstablished方法处理玩家WebSocket连接。首先验证用户登录状态和房间匹配情况,禁止多开连接。当两名玩家成功连接后,服务器会通过noticeGameReady方法通知双方准备就绪。此外,针对线程安全问题,需对房间对象加锁以确保玩家加入顺序的正确性。整个流程覆盖了连接验证、多开限制、双人匹配和状态通知等核心功能,为后续对战模块提供基础支持。(150字) 关键词: WebSocket、游戏房间、连接管理、多开检测、线程
2025-06-01 23:20:19
696
3
原创 [网页五子棋][对战模块]实现游戏房间页面,服务器开发(创建落子请求/响应对象)
五子棋游戏房间实现摘要 本文介绍了五子棋游戏房间页面的实现过程,包含前端页面和WebSocket通信的开发: 前端页面实现: 创建了game_room.html和配套CSS样式 设计了棋盘区域和状态显示区域 页面包含一个450×450像素的canvas棋盘和状态提示框 WebSocket通信实现: 建立了客户端与游戏服务器的WebSocket连接 实现了连接建立、关闭和错误处理逻辑 开发了服务器返回消息的处理机制 包括游戏就绪响应、玩家信息同步和棋盘初始化 服务器端开发: 创建了GameAPI类处理WebS
2025-06-01 00:00:28
684
12
原创 [网页五子棋][对战模块]前后端交互接口(建立连接、连接响应、落子请求/响应),客户端开发(实现棋盘/棋子绘制)
摘要:本文介绍了五子棋游戏前后端交互接口的设计与客户端开发实现。接口采用两套WebSocket路径分别处理对战和匹配模块,保持低耦合。前端通过Canvas绘制棋盘和棋子,使用二维数组存储落子状态,并实现点击落子逻辑。后端负责生成房间ID、玩家信息及胜负判定,通过JSON格式消息进行数据交换。关键交互包括游戏准备通知和落子请求/响应,客户端代码处理棋子绘制、回合切换等游戏逻辑。整体设计兼顾功能实现与开发便利性。
2025-05-30 23:22:09
696
17
原创 [网页五子棋][匹配模式]创建房间类、房间管理器、验证匹配功能,匹配模式小结
摘要: 本文介绍了游戏房间管理系统的设计与实现。通过创建Room类管理玩家对战信息,使用UUID生成唯一房间标识,并利用RoomManager以哈希表形式管理多个房间。匹配功能通过Matcher处理玩家队列,并自动分配房间。验证过程中发现匹配按钮状态未更新问题,原因是服务器未返回响应,修复后功能正常。此外,针对用户多开登录问题,优化前端提示机制,确保单一账号登录体验。系统采用哈希表高效管理房间与玩家映射,支持快速查询与操作。
2025-05-30 23:18:54
1480
35
原创 [网页五子棋][匹配模块]处理开始匹配/停止匹配请求(匹配算法,匹配器的实现)
摘要:本文介绍了游戏匹配系统的设计与实现。系统通过WebSocket处理玩家匹配请求,分为三个分数段位队列(Normal、High、VeryHigh)进行匹配。核心功能包括:1) 解析客户端匹配请求并分类处理;2) 使用Matcher类管理三个匹配队列,提供增删玩家方法;3) 通过独立线程持续扫描队列,将同等级玩家两两配对。系统还处理了连接异常情况,确保玩家断开时自动移出队列。匹配算法采用简单分段策略,未来可扩展更精确的匹配机制。代码实现展示了具体的Java处理逻辑,包括请求解析、队列操作和线程调度。
2025-05-29 22:55:08
1278
11
原创 [网页五子棋][匹配模块]用户管理器可能存在的问题以及解决办法(线程安全、多开问题)
本文解决了WebSocket游戏大厅中的两个关键问题:线程安全和账号多开。 线程安全问题通过将存储用户在线状态的HashMap替换为线程安全的ConcurrentHashMap来解决,确保多线程环境下用户连接状态的正确管理。 针对账号多开问题,采取了禁止策略:当检测到同一账号重复登录时,直接拒绝新连接并关闭会话。同时在连接关闭处理中优化了用户下线逻辑,确保只移除当前会话对应的用户,防止误删其他会话。通过双重验证(获取会话比较和异常处理)保证了用户状态管理的准确性和健壮性。
2025-05-29 22:49:08
478
1
原创 [网页五子棋][匹配模块]服务器开发、用户管理器(创建匹配请求/响应对象、处理连接成功、处理下线)
文章摘要:本文介绍了五子棋游戏中的WebSocket匹配功能实现。通过MatchAPI类处理WebSocket请求,使用WebSocketConfig配置类注册匹配路径并传递HttpSession数据。开发了OnlineUserManager管理用户在线状态,维护玩家WebSocket会话。同时设计了MatchRequest和MatchResponse类来处理匹配请求和响应,完成完整的匹配流程功能实现。
2025-05-28 23:58:21
824
17
原创 [网页五子棋][匹配模块]前后端交互接口(消息推送机制)、客户端开发(匹配页面、匹配功能)
本文摘要: 文章介绍了基于WebSocket的游戏大厅匹配系统设计与实现。系统通过匹配算法将实力相近的玩家配对对战,主要包括:1) 采用WebSocket实现实时消息推送机制,当服务器匹配成功后主动通知玩家;2) 设计了前后端交互接口协议,包括开始/停止匹配请求和两种响应格式;3) 开发了客户端匹配页面,包含用户信息展示区和匹配按钮;4) 实现匹配功能逻辑,按钮可切换"开始匹配"和"匹配中"状态,匹配成功后跳转到游戏房间页面。系统利用WebSocket的实时通信特性,
2025-05-28 23:58:04
825
28
原创 [网页五子棋][用户模块]数据库设计和配置(MyBatis)、约定前后端交互接口、服务器开发
文章摘要: 本文介绍了五子棋游戏后台数据库设计与MyBatis框架集成实现。主要内容包括:1) 创建java_gobang数据库和user表,存储用户账号、密码及游戏数据;2) 配置Spring与MyBatis连接数据库,定义User实体类和Mapper接口;3) 实现用户注册/登录的SQL映射文件;4) 约定前后端RESTful接口规范,包括登录、注册和获取用户信息三个核心接口;5) 开发服务器端UserAPI类,实现基于Session的用户认证逻辑。文中提供了完整的SQL建表语句、YML配置示例和Jav
2025-05-27 23:25:48
1385
11
原创 [网页五子棋][用户模块]客户端开发(登录功能和注册功能)
摘要 本文介绍了五子棋对战游戏的客户端登录页面开发过程。主要包括三个部分:HTML结构、CSS样式设计和jQuery交互实现。HTML部分构建了基本的登录表单框架,包含用户名、密码输入框和提交按钮。CSS部分通过两个样式文件实现页面美化,其中common.css定义全局样式,login.css专门设计登录对话框样式。最后通过jQuery实现客户端与服务器的交互功能,包括表单数据获取和AJAX请求发送。文章还对比了jQuery的本地引入和CDN引入两种方式,并分析了各自的优缺点。整个开发过程展示了从页面布局到
2025-05-27 23:24:31
1729
25
原创 [网页五子棋]项目介绍以及websocket的消息推送(轮询操作)、报文格式和握手过程(建立连接过程)
本文介绍了基于WebSocket的五子棋对战系统设计与实现。项目分为用户模块(注册登录、积分管理)、匹配模块(天梯积分匹配)和对战模块(网页实时对战)。核心技术栈包括Java Spring框架、前端三件套、MySQL数据库及WebSocket协议。重点阐述了WebSocket的消息推送机制,对比了轮询方式的缺点,详细讲解了WebSocket的报文格式和握手建立连接过程。系统通过WebSocket实现玩家间的实时落子信息同步,解决了传统HTTP协议在实时对战场景下的局限性。
2025-05-26 23:44:59
987
9
原创 【RabbitMQ】基于Spring Boot + RabbitMQ 完成应用通信
用户下单成功之后,通知物流系统,进行发货(只涉及到应用通信,不做具体功能实现)通常情况下,订单系统和物流系统是不同团队来开发的,是两个独立的应用- 为了方便演示,就把两个项目创建到一个文件夹下
2025-05-26 23:37:06
2667
22
原创 【RabbitMQ】整合 SpringBoot,实现工作队列、发布/订阅、路由和通配符模式
RabbitMQ整合SpringBoot,实现工作队列模式、发布/订阅模式、路由模式和通配符模式
2025-05-17 10:56:59
1246
4
原创 【RabbitMQ】实现RPC通信的完整指南
RPC(Remote Procedure Call)是一种通过网络从远程计算机请求服务的技术,无需了解底层网络细节。RabbitMQ 实现 RPC 通信通常通过两个队列实现回调过程。客户端发送请求时,指定回调队列(reply_to)和唯一标识(correlation_id),服务端处理请求后将响应发送到回调队列。客户端通过阻塞队列等待响应,确保请求与响应匹配。代码实现中,客户端声明请求和响应队列,发送请求时设置相关属性,并通过阻塞队列接收响应,确保同步机制。整个过程实现了远程调用的同步与异步处理。
2025-05-15 13:05:17
1475
10
原创 【RabbitMQ】发布确认机制的具体实现
消息中间件在消息传递过程中可能面临消息丢失的问题,主要分为生产者、消息中间件自身和消费者三个环节的故障。针对这些问题,RabbitMQ 提供了相应的解决方案:持久化机制、消息应答机制和发布确认机制。发布确认机制是 RabbitMQ 的七大工作模式之一,通过将信道设置为 confirm 模式,确保消息成功投递到队列后,生产者会收到确认消息。发布确认机制支持异步操作,生产者可以同时发布消息和等待确认,并通过回调方法处理确认或失败消息。发布确认机制有三种策略:单独确认、批量确认和异步确认。单独确认策略是每发送一条
2025-05-14 22:50:05
964
6
原创 【RabbitMQ】路由模式和通配符模式的具体实现
路由模式是消息队列中一种消息传递机制,要求消息的发送方在向交换机发送消息时指定RoutingKey,而队列与交换机的绑定也需要指定BindingKey(即RoutingKey的一种)。只有当消息的RoutingKey与队列绑定的BindingKey完全匹配时,队列才会接收该消息。该模式通过精确匹配RoutingKey和BindingKey,实现了消息的定向传递。 在实现路由模式时,首先需要创建交换机,并将其类型设置为BuiltinExchangeType.DIRECT。随后,声明队列并将其绑定到交换机,指定
2025-05-14 22:49:39
1600
28
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人