每日必会5

简介: 为确保消息不丢失,RabbitMQ提供三大机制:生产者确认、消息持久化、消费者确认。生产者通过唯一ID与返回状态判断消息是否送达;消息及队列均支持持久化存储;消费者处理完成后需返回ACK,项目中常用auto模式+重试机制保障消费成功。

怎么确保消息不丢失
面试官这个问题我们生产还真遇到过,后面也去了解了一下,我们用的是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执行流程

相关文章
|
7天前
|
消息中间件 人工智能 决策智能
AgentScope x RocketMQ:构建多智能体应用组合
AgentScope是阿里巴巴推出的开发者友好型多智能体框架,支持模块化、可定制的智能体应用开发。通过集成RocketMQ,实现高效、可靠的A2A通信,助力构建如“智能旅行助手”等复杂协作场景,提升开发效率与系统可扩展性。(238字)
|
7天前
|
存储 JSON NoSQL
MongoDB常用命令
本文介绍如何使用MongoDB存储文章评论数据,涵盖数据库与集合的创建、文档的增删改查、批量操作、投影查询、排序分页及更新修饰符等核心操作,帮助快速掌握MongoDB基本用法。
|
7天前
|
NoSQL Linux Shell
MongoDB单机部署
本文介绍MongoDB在Windows与Linux系统的安装启动方法,涵盖下载、解压、配置数据目录与端口,支持命令行和配置文件方式启动服务。详细说明如何通过mongo shell连接数据库,使用Compass图形化工具管理,以及Linux下部署、防火墙配置和安全关闭服务等操作,助你快速搭建MongoDB运行环境,适用于开发与生产场景。
|
7天前
|
NoSQL Java MongoDB
MongoDB实战演练
本项目基于SpringDataMongoDB实现头条文章评论功能,涵盖增删改查、按文章ID查询及评论点赞。通过MongoTemplate优化操作,结合索引提升查询性能,构建高效稳定的评论微服务模块。
|
7天前
|
缓存 Java 数据库连接
MyBatis常见配置
MyBatis配置优先级:方法参数 > resource/url > properties。支持缓存、延迟加载、自动生成主键等配置,可通过environments配置多环境,默认使用development。事务管理支持JDBC和MANAGED,与Spring集成时由Spring接管事务。
|
7天前
|
SQL Java 数据库连接
MyBatis分页
本文介绍MyBatis分页实现方式:RowBounds为内存分页,大数据易溢出;PageHelper等插件通过SQL改写实现物理分页,支持多数据库;还可借助subList或自定义拦截器分页。总结:大数据场景推荐物理分页,性能更优,优先于逻辑分页。(238字)
|
7天前
|
SQL 缓存 Java
MyBatis
MyBatis配置优先级:方法参数 > resource/url > properties体内。支持多环境、JDBC/MANAGED事务管理,XML实现一对一、一对多关联映射,分页支持逻辑与物理方式,推荐BatchExecutor批量操作,一级缓存默认开启,二级缓存需手动配置。
|
7天前
|
XML Java 数据格式
SpringBoot@Configuration使用总结
被@Configuration标注的类视为Spring配置类,等同于XML配置文件,通过@Bean定义Bean。结合AnnotationConfigApplicationContext可启动IOC容器,加载并管理所有Bean实例,包括配置类自身,实现基于注解的容器配置与组件注册。(238字)
|
7天前
|
人工智能 缓存 NoSQL
AIGC项目
专注AI与高并发架构实战,精通大模型私有化部署、RAG知识库、AIGC生成(文生图/图修复)及Stable Diffusion应用。熟练掌握Spring Cloud微服务、Redis缓存、分库分表、分布式事务与任务调度,具备统一支付、保险系统、派单调度等复杂业务系统设计开发能力。
|
7天前
|
人工智能 NoSQL Java
参考简历模板
项目名称:多领域智能微服务系统 技术架构:SpringBoot + Spring Cloud Alibaba + Spring AI + Nacos + MyBatis + Gateway + Redis + RAG + 知识图谱 项目描述:本系列项目覆盖教育、金融、物流、家政等领域,基于微服务架构融合大模型与AI技术,实现智能推荐、风险控制、路径优化与服务调度。结合RAG、知识图谱、MCP协议及多模态处理,提升系统智能化水平。通过Spring AI对接通义千问,实现语义理解与工具调用。