RabbitMQ如何保证消息不丢失?
RabbitMQ如何保证消息不丢失?
消息丢失的情况
- 生产者发送消息未到达交换机
- 生产者发送消息未到达队列
- MQ宕机,消息丢失
- 消费者服务宕机,消息丢失
生产者确认机制
解决的问题:publisher confirm机制来避免消息发送到MQ过程中消失。
当消息成功发送到MQ:会返回一个publish-confirm ack(acknowledge)
消息发送到交换机失败: publish-confirm nack
消息路由到队列失败:publish-return ack
消息失败后如何处理?
-
- 回调方法即时重发(再发一次)
- 记录日志(如果重发后还是失败可以记录到日志中)
- 保存到数据库然后定时重发,成功发送后即可删除表中的数据(再失败的话,人工解决)
持久化
保证保存在MQ中的消息不丢失。
MQ默认是内存存储消息,开启持久化功能可以确保缓存在MQ中的消息不丢失。
交换机持久化,队列持久化,消息持久化
消费者确认
处理问题:消费者导致的消息丢失问题。
消费者确认机制:消费者处理消息后可以向MQ发送ack回执,MQ收到ack回执后才会删除该消息。
SpringAMQP可以配置的三种确认模式:
manual: 手动ack
auto:自动ack。Spring检测listener代码是否异常。
none: 关闭ack,MQ假定消费者获取消息后会成功处理,因此消息投递后立即被删除。
相关文章:
RabbitMQ如何保证消息不丢失?
RabbitMQ如何保证消息不丢失? 消息丢失的情况 生产者发送消息未到达交换机生产者发送消息未到达队列MQ宕机,消息丢失消费者服务宕机,消息丢失 生产者确认机制 解决的问题:publisher confirm机制来避免消息发送到MQ过程中消失。…...
Random的使用
作用:生成伪随机数 1.导包:import java.util.Random 2.得到随机数对象:Random r new Random(); 3.调用随机数的功能获取随机数: 这里随机生成一个0-9的整数: int number r.nextInt(10); 实现指定区间的随机数&a…...
通过反射修改MultipartFile类文件名
1、背景 项目上有这样一个需求,前端传文件过来,后端接收后按照特定格式对文件进行重命名。(修改文件名需求其实也可以在前端处理的) //接口类似于下面这个样子 PosMapping("/uploadFile") public R uploadFile(List<MultipartFile> fil…...
Macos下修改Python版本
MacOS下修改Python版本 安装 查看本机已安装的Python版本:where python3 ~ where python3 /usr/bin/python3 /usr/local/bin/python3 /Library/Frameworks/Python.framework/Versions/3.12/bin/python3如果没有你想要的版本,去python官网下载安装包。…...
多种采购方式下,数智化招标采购系统建设解决方案
广发证券成立于1991年,是国内首批综合类证券公司,先后于2010年和2015年在深圳证券交易所及香港联合交易所主板上市。 多年来,广发证券在竞争激烈、复杂多变的行业环境中努力开拓、锐意进取,以卓越的经营业绩、持续完善的全面风险…...
Java选择排序
选择排序是一种简单直观的排序算法,其基本思想是每一轮从待排序的元素中选择最小(或最大)的元素,将其与当前位置的元素交换。选择排序的实现步骤可以简要概括为: 初始化: 遍历整个数组,将当前位…...
[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-1 坐标系与概念基准
本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…...
【金猿人物展】DataPipelineCEO陈诚:赋能数据应用,发挥未来生产力
陈诚 本文由DataPipelineCEO陈诚撰写并投递参与“数据猿年度金猿策划活动——2023大数据产业年度趋势人物榜单及奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 我们处在一个“见证奇迹”的时代。在过去的20年间,我们见证了大数据技术快速发展所带…...
4D 毫米波雷达:智驾普及的新路径(二)
4 4D 毫米波的技术路线探讨 4.1 前端收发模块 MMIC:级联、CMOS、AiP 4.1.1 设计:级联、单芯片、虚拟孔径 4D 毫米波雷达的技术路线主要分为三种,分别是多级联、级联 虚拟孔径成像技术、以及 集成芯片。( 1 )多级…...
element plus自定义组件表单校验
方式一: import { formContextKey, formItemContextKey } from "element-plus";// 获取 el-form 组件上下文 const formContext inject(formContextKey, void 0); // 获取 el-form-item 组件上下文 const formItemContext inject(formItemContextKey, …...
C //练习 4-13 编写一个递归版本的reverse(s)函数,以将字符串s倒置。
C程序设计语言 (第二版) 练习 4-13 练习 4-13 编写一个递归版本的reverse(s)函数,以将字符串s倒置。 注意:代码在win32控制台运行,在不同的IDE环境下,有部分可能需要变更。 IDE工具:Visual S…...
DNS解析和主从复制
一、DNS名称解析协议 二、DNS正向解析 三、DNS主从复制 主服务器 从服务器...
光猫(无限路由器)插入可移动硬盘搭建简易版的NAS
1.场景分析 最近查询到了许多有关NAS的资料,用来替代百度云盘等确实有很多优势,尤其是具有不限速(速度看自己配置)、私密性好、一次投入后续只需要电费即可等优势。鉴于手上没有可以用的资源-cpu、机箱、内存等,查询到…...
SpringIOC之support模块GenericGroovyApplicationContext
博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…...
Awesome 3D Gaussian Splatting Resources
GitHub - MrNeRF/awesome-3D-gaussian-splatting: Curated list of papers and resources focused on 3D Gaussian Splatting, intended to keep pace with the anticipated surge of research in the coming months. 3D Gaussian Splatting简明教程 - 知乎...
【镜像压缩】linux 上 SD/TF 卡镜像文件压缩到实际大小的简单方法(树莓派、nvidia jetson)
文章目录 1. 备份 SD/TF 卡为镜像文件2. 压缩镜像文件2.1. 多分区镜像文件的压缩(树莓派、普通 linux 系统等)2.2. 单分区镜像文件的压缩(Nvidia Jetson Nano 等) 3. 还原镜像文件到 SD/TF 卡4. 镜像还原后处理4.1. 镜像分区调整4…...
Zookeeper 和 naocs的区别
Nacos 和 ZooKeeper 都是服务发现和配置管理的工具,它们的主要区别如下:功能特性:Nacos 比 ZooKeeper 更加强大,Nacos 支持服务发现、动态配置、流量管理、服务治理、分布式事务等功能,而 ZooKeeper 主要用于分布式协调…...
2-6基础算法-快速幂/倍增/构造
文章目录 一.快速幂二.倍增三.构造 一.快速幂 快速幂算法是一种高效计算幂ab的方法,特别是当b非常大时。它基于幂运算的性质,将幂运算分解成一系列的平方操作,以此减少乘法的次数。算法的核心在于将指数b表示为二进制形式,并利用…...
行业内参~移动广告行业大盘趋势-2023年12月
前言 2024年,移动广告的钱越来越难赚了。市场竞争激烈到前所未有的程度,小型企业和独立开发者在巨头的阴影下苦苦挣扎。随着广告成本的上升和点击率的下降,许多原本依赖广告收入的创业者和自由职业者开始感受到前所未有的压力。 dz…...
【笔记】书生·浦语大模型实战营——第四课(XTuner 大模型单卡低成本微调实战)
【参考:tutorial/xtuner/README.md at main InternLM/tutorial】 【参考:(4)XTuner 大模型单卡低成本微调实战_哔哩哔哩_bilibili-【OpenMMLab】】 总结 学到了 linux系统中 tmux 的使用 了解了 XTuner 大模型微调框架的使用 pth格式参数转Hugging …...
OpenClaw新手避坑:Qwen3-32B镜像部署的10个常见错误
OpenClaw新手避坑:Qwen3-32B镜像部署的10个常见错误 1. 为什么Qwen3-32B镜像部署容易踩坑? 第一次在本地部署Qwen3-32B镜像对接OpenClaw时,我天真地以为只要按照文档操作就能一帆风顺。结果从环境配置到服务启动,整整折腾了两天…...
OpenClaw多模型调度方案:GLM-4.7-Flash与本地小模型协同工作
OpenClaw多模型调度方案:GLM-4.7-Flash与本地小模型协同工作 1. 为什么需要多模型协同 去年冬天,当我第一次尝试用OpenClaw自动化处理周报时,发现一个尴尬的现象:用GLM-4.7-Flash这样的大模型处理简单表格整理,就像用…...
SpringBoot集成gRPC踩坑指南:从.proto文件到服务调用的完整流程
SpringBoot与gRPC深度整合实战:从协议定义到生产级部署 在微服务架构盛行的今天,跨语言服务调用已成为刚需。作为Google开源的RPC框架,gRPC凭借其基于HTTP/2的高效传输和Protocol Buffers的紧凑序列化,在分布式系统中展现出独特优…...
CatBoost实战指南:从算法原理到工业级应用优化
1. CatBoost为什么成为工业界的宠儿? 第一次接触CatBoost是在处理一个电商用户行为预测项目时。当时数据集里充斥着用户ID、商品类别、地域信息这类类别型特征,用XGBoost和LightGBM处理总感觉差点意思。直到尝试了CatBoost,预测效果直接提升了…...
实战应用:通过快马ai生成c语言学生管理系统,练就综合编程能力
实战应用:通过快马AI生成C语言学生管理系统,练就综合编程能力 最近在复习C语言基础知识时,发现单纯看语法和做小练习效果有限。为了真正掌握编程能力,我决定用C语言开发一个完整的学生信息管理系统。这个项目虽然不大,…...
保姆级教程:在mmdetection v2.x上,用SSD300训练自定义VOC数据集(附完整配置文件修改清单)
从零到一:基于mmdetection的SSD300自定义VOC数据集训练全流程实战 当第一次接触mmdetection框架时,面对复杂的配置文件体系和各种_base_目录,很多开发者都会感到无从下手。本文将从一个实践者的角度,手把手带你完成从数据集准备到…...
【AI智能体实战】基于Dify构建自然语言数据库查询系统的全流程解析
1. 为什么需要自然语言查询数据库? 想象一下这个场景:市场部的同事小王需要从公司数据库里找出"去年销售额超过100万且退货率低于5%的客户名单"。如果他不会写SQL,要么得找IT部门帮忙,要么得花半天时间导出Excel手动筛选…...
WechatDecrypt终极指南:3步轻松解密微信数据库的完整方案
WechatDecrypt终极指南:3步轻松解密微信数据库的完整方案 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 想要找回珍贵的聊天记录却苦于微信加密机制?WechatDecrypt作为一款专业的…...
工业镜头设计实战:用ZEMAX从零搭建一个线扫镜头(波长、视场、F数设置避坑指南)
工业镜头设计实战:用ZEMAX从零搭建一个线扫镜头(波长、视场、F数设置避坑指南) 在机器视觉领域,线扫镜头因其高分辨率、大视场和稳定的成像质量,成为工业检测、印刷品质量控制和半导体检测等场景的首选。与普通面阵镜头…...
别再手动算占空比了!手把手教你用TI C2000 EPWM互补输出驱动电机(附死区配置避坑指南)
从零到精通的TI C2000 EPWM电机驱动实战:死区配置与波形调试全解析 在电机控制领域,精确的PWM信号生成直接决定了系统性能和可靠性。传统的手动计算占空比方式不仅效率低下,还容易引入人为误差。TI C2000系列DSP内置的增强型PWM模块ÿ…...
