每日必会5

简介: 为确保消息不丢失,RabbitMQ通过生产者确认、消息持久化和消费者确认机制保障。生产者发送消息后根据返回结果判断投递状态;消息与队列均持久化存储;消费者处理完成后需返回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执行流程

相关文章
|
2月前
|
机器学习/深度学习 存储 自然语言处理
大模型基础概念术语解释
大语言模型(LLM)基于Transformer架构,通过海量文本训练,具备强大语言理解与生成能力。其核心组件包括注意力机制、位置编码与嵌入层,支持文本分割为Token进行处理。参数量达亿级以上,规模增长带来涌现能力,如复杂推理与跨任务泛化。混合专家模型(MoE)提升效率,推动模型持续扩展。
|
2月前
|
消息中间件 人工智能 决策智能
AgentScope x RocketMQ:构建多智能体应用组合
AgentScope是阿里巴巴推出的开发者友好型多智能体框架,支持模块化、可定制的智能体应用开发。通过集成RocketMQ,实现高效、可靠的Agent间通信,助力构建如“智能旅行助手”等复杂协作场景,推动多智能体生态发展。(238字)
|
2月前
|
人工智能 JSON 数据挖掘
大模型应用开发中MCP与Function Call的关系与区别
MCP与Function Call是大模型应用的两大关键技术。前者是跨模型、标准化的通信协议,实现多工具动态集成;后者是模型调用外部函数的内置机制。MCP如同“蓝牙协议”,支持多设备互联互通,具备高兼容性与扩展性;Function Call则像“语音助手”,依赖特定模型完成具体任务。二者在功能上互补:MCP构建通用接口层,解耦模型与工具;Function Call负责意图解析与指令生成。
|
2月前
|
NoSQL Java MongoDB
MongoDB实战演练
本项目基于SpringDataMongoDB实现头条文章评论功能,涵盖增删改查、按文章ID查询及评论点赞。通过MongoTemplate优化操作效率,结合索引提升查询性能,构建高效稳定的评论微服务模块。(238字)
|
2月前
|
存储 JSON NoSQL
MongoDB常用命令
本文介绍如何使用MongoDB存储文章评论数据,涵盖数据库与集合的创建、文档的增删改查、批量操作、投影查询、排序分页及更新修饰符等核心操作,帮助快速掌握MongoDB基本用法。
|
2月前
|
存储 NoSQL 关系型数据库
4-MongoDB索引知识
MongoDB索引基于B树结构,支持单字段、复合、地理空间、文本及哈希索引,有效提升查询效率,避免全表扫描,适用于等值、范围、排序与全文检索,显著优化大数据量下的查询性能。
|
2月前
|
缓存 Java 数据库连接
MyBatis常见配置
MyBatis配置优先级:方法参数 > resource/url > properties。支持缓存、延迟加载、主键生成等常用配置,可多环境管理,默认使用development环境。事务由JDBC或MANAGED控制,集成Spring后由其接管事务管理。
|
2月前
|
XML Java 数据库连接
MyBatis映射关系(1-1 1-n n-n)
本文介绍MyBatis四大关联映射:一对一(属性与字段映射)、一对多(如用户含多个角色,用`<collection>`)、多对一(如博客关联作者,用`<association>`)和多对多(通过中间类实现,如用户与部门)。解决实体间复杂关系映射问题,提升数据查询效率。
|
2月前
|
SQL Java 数据库连接
MyBatis分页
本文介绍MyBatis分页实现方式:RowBounds为内存分页,大数据易溢出;PageHelper等插件通过SQL改写实现物理分页,支持多数据库;还可通过subList或自定义拦截器分页。总结:大数据场景推荐物理分页,性能更优,应优先于逻辑分页使用。(238字)
|
2月前
|
SQL 缓存 Java
MyBatis
MyBatis配置优先级:方法参数 > resource/url > properties体内;支持多环境配置与事务管理(JDBC/MANAGED),XML实现一对一、一对多关联映射,分页支持逻辑与物理方式,推荐BatchExecutor批量操作,一级缓存默认开启,二级缓存需手动配置。