基于消息队列RabbitMq修改黑马点评 📅 发布时间:2026/7/10 13:25:12 👁️ 浏览次数: 原问题黑马点评中对于异步秒杀的实现是用redis阻塞队列优化详情看黑马点评教学组缺点1.阻塞队列会在高并发时候出现jvm内存问题2.jvm内存没有持久化机制如果服务宕机存在队列中的信息就会消失基于RabbitMq修改1.修改配置文件1.publisher-confirm-type: correlated当生产者发送消息到mq的时候mq会返回确定或者拒绝的信号保证消息可靠投递避免redis判断成功但数据库没有创建订单2.listener.simple.acknowledge-mode: manual关闭自动确认设置消费者的消息手动确认消费者会在处理完业务逻辑之后调用channel.basicAck()来告知 MQ 消息已成功处理如果消费端在处理过程中崩溃或抛出异常且未发送 ACK确认MQ 会认为消息未被处理将其重新入队。保证消费可靠避免 “消息已接收但数据库操作失败” 导致的数据不一致确保消息与业务的一致性。3.listener.simple.retry.enabled: true开启重试机制有效处理暂时性事故提高系统可用性4.max-attempts: 3最大重试次数为32.生产者当lua脚本返回结果时候对结果进行判断然后发送给消息队列3.消费者1.声明交换机和对象2.指定消费方法tag是消息的唯一标识在形参中声明spring会自动生成channelRabbitMq客户端和服务器的通道用于交互由spring自动注入basicAck确定消息basicAcklong tagboolean multiple //消息是否批量确定basicNack处理失败订单long tagboolean multipleboolean requeue//是否重新入队注意要在配置文件提前配置异常处理当前业务以及实现了消息的重试可是这样是不够的可以有如下提升1.数据回滚若还是发生数据库操作失败我们可以在catch代码块中调用rollbackRedis回滚redis保证数据库和redis的一致性2.兜底策略避免极端情况我们在数据库扣减库存中使用乐观锁避免库存超卖3.持久化我们必须先声明队列交换机消息三者的持久化缺一不可只配置队列持久化当服务宕机时候队列虽然存在交换机却删除了当生产者发送消息的时候没有找到交换机会导致消息投递失败配置队列交换机不配置消息队列和交换机虽能恢复但队列里未消费的消息会全部丢失秒杀场景会出现“消息已投递到 MQ但 MQ 宕机后未处理的订单消息丢失无法创建订单”队列持久化交换机持久化exchange Exchange(value seckillOrderExchange,type ExchangeTypes.DIRECT, durable true)消息持久化在rabbitmq配置文件中写入全局配置持久化template: message-converter: org.springframework.amqp.support.converter.Jackson2JsonMessageConverter delivery-mode: PERSISTENT# 消息持久化PERSISTENT持久化NON_PERSISTENT非持久化
clawhub下载skill报Error: Rate limit exceeded问题解决方法 💽 OpenClaw部署踩坑 OpenClaw 我自己归纳一下ai的发展态势。 自然语言对话 -> copilot对话补全代码 -> cursor根据自然语言自动完成代码需求,自动通过命令行调试 -> openclaw通过skill来让大模型操作各种软件。 我把他理解为vscode,… 2026/5/17 9:22:16
一个swoole项目的版本问题 一个老的swoole项目,要迁移到新的服务器上。 各种配置都弄好了,启动项目报错“PHP Fatal error: Uncaught Swoole\Error: API must be called in the coroutine” 完全无从下手 看到这篇文章(https://blog.csdn.net/qq_36777143/article/… 2026/7/3 7:56:31
永磁同步电机(PMSM)的转速环模糊滑模 永磁同步电机(PMSM)转速环模糊滑模最近在调永磁同步电机的转速环,传统PI控制遇到负载突变就抖得亲妈都不认识。试了七八种改进方案,最后发现把模糊逻辑和滑模控制揉在一起效果意外带劲,今天就跟大伙唠唠这个缝合怪的实… 2026/7/4 10:21:56
仓库的四季:春进、夏忙、秋囤、冬守 ——百业仓储的温度哲学 你有没有想过,那些你以为“一动不动”的仓库,其实每天都在经历生死迁徙? 从-18C的冻库到35C的月台,从冬至前的极限冲刺到盛夏的损耗战场,仓储从来不是静态的存放,而是一个跟着季节脉… 2026/7/11 7:03:04
GLM-5.1编程模型实战:SWE-bench 45.3分背后的工程化突破 1. 项目概述:当“小龙虾”真的开始写代码了你有没有在深夜改 Bug 时,盯着终端里一行报错发呆,心里默念:“要是有个能真正看懂我项目结构、理解我注释语气、顺手把 PR 描述和单元测试一起补全的助手就好了?”——这不是… 2026/7/11 7:03:04
Unity项目从Azure Kinect迁移至Femto Bolt:SDK适配与性能优化实战 1. 项目概述:从Azure Kinect到Femto Bolt的迁移之路如果你正在用Unity开发一个依赖Azure Kinect DK进行三维感知、动作捕捉或者环境重建的项目,最近可能正面临一个现实问题:Azure Kinect DK已经停产,后续的硬件支持和供货都成了未… 2026/7/11 6:57:02
【JAVA毕设源码分享】基于SpringBoot+Vue的二手数码产品交易平台的开发与实现(程序+文档+代码讲解+一条龙定制) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am… 2026/7/11 6:57:02
从零构建C++聊天系统:网络编程、并发与工程化实战指南 1. 项目概述:为什么从零构建一个C聊天系统?如果你正在学习C,并且已经啃完了语法书、刷了不少算法题,但总感觉离“真正能用C做点东西”还差一口气,那么,这个“从零到一构建C聊天系统”的专栏,可能… 2026/7/11 6:55:01
iOS 27 AI功能数据透明化:云端处理与隐私提示机制解析 苹果在 iOS 27 系统中引入了一项重要的隐私提示机制,当用户使用 AI 图像生成等功能时,系统会明确告知相关数据将被发送到谷歌云进行处理。这一变化不仅体现了苹果对用户数据透明度的重视,也反映了当前 AI 服务在移动设备上的实现方式正在发生… 2026/7/11 6:55:01
5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符] 5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载… 2026/7/11 0:00:11
工业信号干扰处理与FOD4216光耦应用实战 1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干… 2026/7/11 0:00:11
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构) 摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计… 2026/7/11 0:00:11
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/8 20:15:17
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08