每日必会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执行流程

相关文章
|
4月前
|
机器学习/深度学习 存储 自然语言处理
大模型基础概念术语解释
大语言模型(LLM)基于Transformer架构,通过海量文本训练,具备强大语言理解与生成能力。其核心组件包括注意力机制、位置编码与嵌入层,支持文本分割为Token进行处理。参数量达亿级以上,规模增长带来涌现能力,如复杂推理与跨任务泛化。混合专家模型(MoE)提升效率,推动模型持续扩展。
|
4月前
|
Linux 数据安全/隐私保护 虚拟化
虚拟机安装(CentOS7)
准备CentOS7镜像及VMware Workstation虚拟机工具,可从百度云下载(提取码:h1y9/bkz3)。使用VMware创建虚拟机,参考知乎教程完成安装。默认登录用户为root,密码由用户自定义设置。需准备一台具备运行虚拟机条件的电脑。
|
4月前
|
消息中间件 人工智能 决策智能
AgentScope x RocketMQ:构建多智能体应用组合
AgentScope是阿里巴巴推出的开发者友好型多智能体框架,支持模块化、可定制的智能体应用开发。通过集成RocketMQ,实现高效、可靠的Agent间通信,助力构建如“智能旅行助手”等复杂协作场景,推动多智能体生态发展。(238字)
|
4月前
|
人工智能 JSON 数据挖掘
大模型应用开发中MCP与Function Call的关系与区别
MCP与Function Call是大模型应用的两大关键技术。前者是跨模型、标准化的通信协议,实现多工具动态集成;后者是模型调用外部函数的内置机制。MCP如同“蓝牙协议”,支持多设备互联互通,具备高兼容性与扩展性;Function Call则像“语音助手”,依赖特定模型完成具体任务。二者在功能上互补:MCP构建通用接口层,解耦模型与工具;Function Call负责意图解析与指令生成。
|
4月前
|
消息中间件 人工智能 Linux
基于 RocketMQ 构建 高可靠 A2A 通信通道
A2A协议由Google于2025年发起,旨在实现跨厂商AI智能体的标准化通信。基于RocketMQ构建的异步通信方案,支持任务分发、流式交互与状态同步,助力高效、可靠的多智能体协同系统落地,现已开源。
|
4月前
|
JSON 缓存 前端开发
什么是跨域
CORS(跨域资源共享)是W3C标准,允许浏览器向跨源服务器发送XMLHttpRequest请求,突破AJAX同源限制。需浏览器和服务器共同支持,主流浏览器均已兼容。CORS将请求分为简单请求和非简单请求,前者直接发送Origin头,后者需预检(OPTIONS请求)确认权限。服务器通过Access-Control-*响应头授权。相比仅支持GET的JSONP,CORS支持所有HTTP方法,更安全灵活。
|
4月前
|
存储 数据库
数据库设计三范式
第一范式要求字段原子性,不可再分;第二范式要求消除部分依赖,一张表只描述一件事;第三范式要求消除传递依赖。三者旨在减少数据冗余、提升维护效率,但实际设计应结合业务需求灵活应用,不必拘泥范式。
|
4月前
|
运维 安全 Devops
生产环境缺陷管理
git-poison基于go-git实现,通过“投毒/解药/银针”机制,在多分支开发中自动追溯、阻塞未修复bug,降低协同成本,避免漏修、漏发导致的生产故障,提升发布安全与效率。
|
4月前
|
前端开发 程序员
SpringCloud常见注解及使用说明
本文介绍了SpringMVC中用于映射HTTP请求的注解,重点讲解@RequestMapping的作用与用法。通过该注解,可将前端请求路径映射到后端控制器方法,实现增删改查接口的精准定位,如“/staff/add”对应新增操作。此外,@GetMapping、@PostMapping等是@RequestMapping的衍生注解,简化了常用HTTP方法的映射。
|
4月前
|
存储 缓存 安全
Java基础篇
`final`修饰类不可继承、方法不可重写、变量引用不可变;重载同名不同参,重写需签名一致;`==`比较地址或值,`equals`比较对象内容;反射可动态获取类信息,但性能较低;常用集合有List、Set、Map;`StringBuilder`非线程安全但高效;HashMap基于数组链表+红黑树,线程不安全;ConcurrentHashMap线程安全;线程池提升性能,合理配置核心参数;JVM由类加载器、运行时数据区、执行引擎等组成,内存划分为堆、栈、方法区等;双亲委派保障类加载安全;Stream支持函数式编程,JDK8引入Lambda、方法引用、Optional等新特性。