Day05 每日必会

简介: 为确保消息不丢失,RabbitMQ提供三大机制:生产者确认(通过唯一ID与ACK/NACK反馈)、消息持久化(队列、消息、交换机持久化)和消费者确认(手动/自动ACK)。我们采用auto模式+重试处理。延迟消息可通过TTL或DelayExchange插件实现,常用于超时订单场景。消息积压可扩消费者或队列容量解决。MyBatis中#{}预编译防注入,${}直接拼接;有一级会话缓存和二级Mapper缓存;SQL执行经SqlSession解析MappedStatement,交由Executor执行。

怎么确保消息不丢失
面试官这个问题我们生产还真遇到过,后面也去了解了一下,我们用的是RabbitMQ,它本身是有生产者确认机制、MQ消息持久化和消费者确认机制三个保证的,如果面试官还想再了解深一点我可以再展开一下。
生产者确认机制就是给每个消息指定一个唯一ID,当消息发送到MQ之后会有一个结果返回给发送者,如果是消息未投递到交换机就返回publish-confirm的nack,如果到了交换机但是没到队列就返回publish-return的ack,从而保证消息是百分百存储到消息队列中。
消息持久化就比较简单,因为RabbitMQ本身就做了队列持久化、消息持久化、交换机持久化,所以它本身是没有问题的。
消费者确认机制是通过消费者回执来确认消费者是否成功处理消息的:消费者获取消息后,应该向RabbitMQ发送ACK回执,表明自己已经处理消息。有三种配置方式:
•manual:手动ack,需要在业务代码结束后,调用api发送ack。
•auto:自动ack,由spring监测listener代码是否出现异常,没有异常返回ack;抛出异常返回nack
•none:关闭ack,MQ假定消费者获取消息后会成功处理,因此消息投递后立即被删除
我们项目中采用的事auto+重试次数来配置解决的
了解过MQ的延迟消息吗
了解过的面试官,他是可以通过基于消息的延迟发送或者基于消息队列的延迟消费,前者就是给消息设置一下TTL时间,后者我们是通过安装一个DelayExchange的插件来解决的。
过去我们是在一些取消超时订单的业务场景下有实施过这个解决方案
怎么解决消息挤压呢
可以通过
增加更多消费者,提高消费速度。也就是我们之前说的work queue模式(或者多线程同理)
扩大队列容积,提高堆积上限
理论专项
MyBatis

和&区别

一级/二级缓存
一条SQL执行流程

相关文章
|
15小时前
|
敏捷开发 Java 测试技术
为什么要单元测试
本文探讨单元测试如何让软件开发“提速”而非“踩刹车”。从测试体系演进出发,解析测试金字塔理念,阐明单元测试在提升代码质量、调试效率、重构信心和研发效能方面的核心价值,助力项目长期高效迭代。
|
14小时前
|
架构师 前端开发 中间件
技术新人成长到Leader的路径
本文为技术人成长进阶指南,涵盖新人到技术leader的四大阶段:从踏实做事、建立思维框架,到激发自我驱动力、打造核心竞争力;从修炼全局视角、成事思维,到成就他人、创造价值感。强调以事修人、以人成事,助力技术人实现持续成长与突破。(238字)
|
15小时前
|
测试技术
发布模式
蓝绿部署是一种快速、低风险的应用发布策略,通过维护两套独立系统(运行中的“绿色”与待发布的“蓝色”),实现无缝切换与快速回滚,减少发布中断。测试稳定后流量切至蓝色系统,原绿色系统可下线。适用于内聚性强、切换简单的系统。不同于金丝雀发布(渐进式替换)和A/B测试(效果对比),蓝绿部署聚焦于平稳上线,保障稳定性。
|
15小时前
|
机器人 Java API
钉钉通知
创建钉钉机器人并设置告警群,通过Webhook获取API地址。使用PostMan测试文本、@指定人及卡片消息发送。编写Java代码调用官方SDK实现消息推送,封装工具类并与Nacos配置中心集成,实现异常日志等场景下的实时告警通知,确保问题及时处理。
|
15小时前
|
小程序 Java
微信通知
基于企业微信与小程序集成,通过appId和secret获取access_token,实现消息发送。需配置企业微信及绑定小程序,使用Java异步调用接口,示例包含用户信息实体类定义,支持userid、name等字段设置,便于消息推送与用户管理。(238字)
|
15小时前
|
缓存 NoSQL Redis
Day08 每日必会
深入解析Redis核心机制:涵盖缓存三剑客(穿透、击穿、雪崩)成因与应对;持久化、过期与淘汰策略原理;哨兵选举流程;主从同步机制(全量与增量);以及“单线程”模型的真相,全面掌握Redis高性能背后的理论基础。
|
15小时前
Day07 每日必会
CAP理论指出分布式系统中一致性、可用性、分区容错性三者只能取其二,因网络不可靠,P必然存在,故需在A和C间权衡。BASE理论提出基本可用、软状态、最终一致性的思路,平衡CAP矛盾。Seata AT模式通过全局事务ID协调分支事务,实现分布式事务控制。MQ防消息丢失、重复消费及积压,需结合持久化、确认机制、幂等处理与批量消费等策略。
|
15小时前
|
存储 缓存 NoSQL
Day06 每日必会
Redis常见数据结构包括:字符串、哈希、列表、集合、有序集合及地理空间索引。持久化机制有AOF和RDB,配合使用可有效防数据丢失。三大缓存问题:雪崩、穿透、击穿,需通过过期时间随机化、布隆过滤器、分布式锁等手段应对。
|
15小时前
|
设计模式 缓存 Java
Day04 每日必会
在订单支付完成后通知配送中心等异步、解耦场景中常用MQ,如使用TopicExchange话题模式实现灵活路由。结合Spring的IOC、AOP、三级缓存及事务管理,保障系统稳定与解耦。
|
15小时前
|
设计模式 Linux 开发工具
Day03 每日必会
熟悉Docker部署,掌握镜像与容器操作命令,如pull、run、exec等;熟练使用Linux常用指令,包括文件、进程、网络管理;排查日志常用cat、grep、tail;了解SpringMVC执行流程、核心注解及设计模式。

热门文章

最新文章