当前位置: 首页 > article >正文

2026终极版|Spring Boot 3.5.11 + JDK21 整合 RabbitMQ / RocketMQ / Kafka(对比 + 选型 + 可运行示例)

适配环境JDK 21LTS、Spring Boot 3.5.11适用人群Java 后端开发、架构师、技术选型决策者特点基于 Spring Boot 3.5.x JDK21 实战验证代码可直接运行避免常见版本与虚拟线程误用问题一、技术背景1️⃣ JDK21JDK21 是当前长期支持版本LTS虚拟线程Project Loom正式 GA大幅降低高并发场景下的线程资源占用成本。2️⃣ Spring Boot 3.5.11Spring Boot 3.5.11 为 3.5.x 稳定维护版本基于 Spring Framework 6.x全面支持 JDK17对 JDK21 运行稳定。3️⃣ 三大主流 MQ:contentReference[oaicite:0]{index0}:contentReference[oaicite:1]{index1}:contentReference[oaicite:2]{index2}三者在架构模型、事务能力、吞吐目标和生态定位上差异明显。二、核心能力对比基于 Spring Boot 3.5.11 JDK21对比维度RabbitMQRocketMQKafka实现语言ErlangJavaJavaSpring 集成spring-boot-starter-amqprocketmq-spring-boot-starterspring-kafka架构模型Exchange-QueueNameServer BrokerBroker Topic Partition顺序消息单队列顺序支持全局/分区顺序分区内顺序事务支持无原生分布式事务原生事务消息半消息机制支持 Producer 事务延迟消息插件或 TTL原生支持需业务实现典型定位业务解耦 / 中小系统金融级核心业务大数据 / 流处理说明吞吐量与延迟强依赖硬件、磁盘、刷盘策略、消息大小与网络环境不给出固定数值。三、场景选型建议✅ 选择 RabbitMQ 的场景适合中小规模业务系统快速上线项目IoT / MQTT 协议场景运维团队规模较小特点易上手、生态成熟、可视化控制台友好。✅ 选择 RocketMQ 的场景适合电商订单金融支付库存扣减延迟关闭订单特点原生事务消息支持顺序消息延迟消息能力强Java 生态集成自然✅ 选择 Kafka 的场景适合日志采集用户行为分析实时数仓事件溯源高吞吐数据流特点分区模型天然支持扩展支持 Producer 事务流处理生态完善Flink / Spark四、Spring Boot 3.5.11 JDK21 实战整合1️⃣ 整合 RabbitMQ依赖dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-amqp/artifactId/dependencyapplication.ymlspring:threads:virtual:enabled:true# 开启虚拟线程支持rabbitmq:host:localhostport:5672username:guestpassword:guest配置虚拟线程执行器BeanpublicExecutorrabbitVirtualExecutor(){returnneworg.springframework.core.task.VirtualThreadTaskExecutor(rabbit-virtual-);}BeanpublicSimpleRabbitListenerContainerFactoryrabbitListenerContainerFactory(ConnectionFactoryconnectionFactory,ExecutorrabbitVirtualExecutor){SimpleRabbitListenerContainerFactoryfactorynewSimpleRabbitListenerContainerFactory();factory.setConnectionFactory(connectionFactory);factory.setTaskExecutor(rabbitVirtualExecutor);factory.setConcurrentConsumers(5);factory.setMaxConcurrentConsumers(20);returnfactory;}生产者 消费者SpringBootApplicationpublicclassRabbitApp{publicstaticvoidmain(String[]args){SpringApplication.run(RabbitApp.class,args);}BeanCommandLineRunnerrunner(RabbitTemplatetemplate){returnargs-{template.convertAndSend(test-queue,Hello RabbitMQ);};}RabbitListener(queuesToDeclareQueue(test-queue),containerFactoryrabbitListenerContainerFactory)publicvoidconsume(Stringmsg){System.out.println(收到: msg);System.out.println(虚拟线程: Thread.currentThread().isVirtual());}}2️⃣ 整合 RocketMQ依赖dependencygroupIdorg.apache.rocketmq/groupIdartifactIdrocketmq-spring-boot-starter/artifactIdversion2.3.2/version/dependencyapplication.ymlspring:threads:virtual:enabled:truerocketmq:name-server:localhost:9876producer:group:test-producer-group生产者AutowiredprivateRocketMQTemplaterocketMQTemplate;BeanCommandLineRunnerrocketRunner(){returnargs-{rocketMQTemplate.convertAndSend(test-topic,Hello RocketMQ);};}消费者RocketMQMessageListener(topictest-topic,consumerGrouptest-consumer-group)ComponentpublicclassRocketConsumerimplementsRocketMQListenerString{OverridepublicvoidonMessage(Stringmessage){System.out.println(收到: message);System.out.println(虚拟线程: Thread.currentThread().isVirtual());}}RocketMQ 的线程模型由客户端内部管理如需定制线程池应通过对应配置项或扩展方式调整。3️⃣ 整合 Kafka依赖dependencygroupIdorg.springframework.kafka/groupIdartifactIdspring-kafka/artifactId/dependencyapplication.ymlspring:threads:virtual:enabled:truekafka:bootstrap-servers:localhost:9092consumer:group-id:test-groupauto-offset-reset:earliestKafka Listener 容器工厂BeanpublicConcurrentKafkaListenerContainerFactoryString,StringkafkaListenerContainerFactory(ConsumerFactoryString,Stringcf){ConcurrentKafkaListenerContainerFactoryString,StringfactorynewConcurrentKafkaListenerContainerFactory();factory.setConsumerFactory(cf);factory.setConcurrency(5);returnfactory;}生产者 消费者AutowiredprivateKafkaTemplateString,StringkafkaTemplate;BeanCommandLineRunnerkafkaRunner(){returnargs-kafkaTemplate.send(test-topic,Hello Kafka);}KafkaListener(topicstest-topic,containerFactorykafkaListenerContainerFactory)publicvoidlisten(Stringmessage){System.out.println(收到: message);System.out.println(虚拟线程: Thread.currentThread().isVirtual());}五、生产级优化建议RabbitMQ开启生产者确认机制合理设置 prefetch使用持久化队列 持久化消息监控积压与连接数RocketMQ合理设置刷盘策略SYNC_FLUSH / ASYNC_FLUSH核心业务使用事务消息Broker 主从部署Kafka分区数量与副本因子合理规划使用事务保证 Exactly-Once启用批量消费提升吞吐六、最终选型总结场景推荐快速开发 / 中小系统RabbitMQ金融级核心交易RocketMQ大数据 / 日志 / 流处理Kafka七、结语在Spring Boot 3.5.11 JDK21技术栈下虚拟线程降低并发成本三大 MQ 均可稳定集成选型关键在业务模型而非“谁吞吐更高”架构没有绝对优劣只有是否适合你的系统。

相关文章:

2026终极版|Spring Boot 3.5.11 + JDK21 整合 RabbitMQ / RocketMQ / Kafka(对比 + 选型 + 可运行示例)

适配环境:JDK 21(LTS)、Spring Boot 3.5.11 适用人群:Java 后端开发、架构师、技术选型决策者 特点:基于 Spring Boot 3.5.x JDK21 实战验证,代码可直接运行,避免常见版本与虚拟线程误用问题一…...

养成记录好习惯(4)——Terraform离线部署(linux-amd64)

Linux 系统离线安装配置 Terraform(对接 Proxmox/PVE) 前言 本文主要介绍在离线 Linux 环境下安装配置 Terraform,并部署 Proxmox Provider 插件,实现通过 Terraform 集中管理 PVE 虚拟化基础设施,解决离线环境下 Te…...

C# WinForm+YOLO 视觉检测上位机开发:从零到上线,工业级可落地

摘要: 很多开发者在实验室能跑通 YOLO Demo,但一到工厂现场就“崩盘”:界面卡死、内存泄漏、相机掉线、PLC 通信超时。 工业级上位机 ≠ 简单的 UI + 推理代码。它需要高可用架构、硬件抽象层、线程安全调度和完善的异常处理机制。 本文基于 2026 年最新工业实践,从零构建一…...

C#+YOLO 模型量化后精度暴跌?一文教你 INT8 量化不丢精度的正确姿势

摘要: 为了在边缘设备(如 RK3588, Jetson Nano, Intel NPU)上获得极致速度,你将 YOLO 模型从 FP32 量化为 INT8。 结果却是灾难性的: mAP 从 0.85 直接掉到 0.40。 小目标完全消失,大目标置信度虚高。 C# 推理结果与 Python 训练结果天差地别。 真相是:量化不是简单的“…...

C#+YOLO 工业现场踩坑实录:产线环境的10个奇葩问题与“血泪”解决方案

摘要: 实验室里 FPS 飙到 200,准确率 99%,一到工厂现场就“原形毕露”? 相机明明插着,程序却报“设备未找到”。 白天好好的,晚上灯光一开就乱检。 运行三天后,内存爆满,程序卡死。 机械臂抖动一下,检测框就飘到十万八千里外。 工业现场不是实验室,这里是“地狱模式”…...

C#+YOLO开发10个必踩的坑,我帮你全踩过了,附完整解决方案

带过20多个徒弟做工业视觉项目,上个月还帮东莞长安的一家PCB高速分拣线救急——90%的人都会踩同样的10个坑,而且都是工业现场真实高频的,不是实验室玩具Demo的小问题: 要么折腾3天没跑通第一个Demo; 要么推理结果框位偏20px,根本没法用; 要么16路相机总帧率只有5FPS,传…...

C#+YOLO推理结果不对?90%的问题都是预处理/后处理写错了,一文讲透

摘要: 很多开发者在将 YOLO 模型从 Python 迁移到 C# 时,会遇到这种“灵异事件”: Python 测得准准的,C# 一跑全是乱码或检测不到。 置信度全是 0.01,或者框的位置飘到了十万八千里外。 换个图片能检测到,换个背景就全错。 真相是:模型本身没问题,问题出在“数据翻译”…...

深入 Java 垃圾回收调优:从底层原理到落地实战,攻克性能瓶颈

🔥 本文系统梳理Java垃圾回收(GC)调优的核心知识、实战技巧与典型案例,帮你从「会用JVM」到「精通GC调优」,精准解决内存泄漏、GC频繁、响应延迟等核心问题。 在Java开发中,GC(垃圾回收&#x…...

计算机毕设 java 米果智能食堂管理系统分析与设计 Java+SpringBoot 智能食堂点餐管理平台 Web 版校园食堂线上订餐系统

计算机毕设 java 米果智能食堂管理系统分析与设计 3m33m9(配套有源码 程序 mysql 数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联 xi 可分享 生活节奏加快,线上订餐需求持续增长,传统食堂管理效率低、点…...

Rithmic 14天/30天试用账号注册工具|支持ATAS、Bookmap等平台实时行情接入

温馨提示:文末有联系方式Rithmic短期试用账号智能注册工具 提供合规、稳定的Rithmic14天及30天数据试用账号注册服务,适用于需要高频、低延迟期货与期权行情的量化与盘口交易者。兼容主流专业交易终端 本工具生成的Rithmic账号可无缝对接ATAS&#xff08…...

企业级CRM客户关系管理软件|ThinkPHP+FastAdmin开发|含源码+UniApp小程序/H5双端

温馨提示:文末有联系方式什么是企业级CRM客户关系管理系统 这是一款面向现代团队的智能客户关系管理(CRM)软件,采用成熟稳定的ThinkPHP框架与FastAdmin后台快速开发平台构建,兼顾高性能与易维护性,助力企业…...

【二维路径规划与定位】A*算法对二维障碍物平面的路径规划,结合TOA定位的MATLAB仿真代码。订阅专栏后可查看完整代码

基于MATLAB实现的A路径规划算法代码,用于二维平面上的无人车路径规划与避障,并集成了TOA(Time of Arrival)定位仿真功能。通过A算法寻找从起点到终点的最优路径。模拟了基于TOA测距技术的定位系统,通过分布在地图四角和边缘的6个锚节点对路径上的位置进行定位估计,并对比…...

一些毕业设计代码对应问题的解决

宠物预约系统如果出现均正常运行但是没有数据显示的问题时使用更改这个源码/client_code/.env.development中的URL对应信息即可VUE_APP_BASE_API /cl10341231 VUE_APP_BASE_API_URL http://localhost:8082#更改为后端的输出接口 VUE_APP_BASR_API_PREFIX /cl10341231项目搬运…...

栈与队列经典算法题精讲(一):循环队列·有效括号·面试高频原题全解析

🏠个人主页:黎雁 🎬作者简介:C/C/JAVA后端开发学习者 ❄️个人专栏:C语言、数据结构(C语言)、EasyX、JAVA、数据结构与算法(JAVA)、游戏、规划、程序人生 ✨ 从来绝巘须孤…...

如何定义一个 IoT 产品的核心用户价值

——面向高级产品负责人的系统方法 目录 一、什么是 IoT 产品的核心用户价值 二、IoT用户价值的三层结构 第一层:功能价值(Functional Value) 第二层:场景价值(Scenario Value) 第三层:情感…...

红黑树介绍

红黑树(Red-Black Tree)是一种自平衡的二叉查找树,它是由 Rudolf Bayer 在 1972 年发明的。它在每个节点上增加一个存储位表示节点的颜色,可以是红色或黑色,通过对任何一条从根到叶子的路径上各个节点的颜色进行约束&a…...

【研知有术论文发表】投中真香!三区园艺学性价比SCI期刊推荐,巨好投

ISSN:0014-2336五年影响因子:1.8收录数据库:SCIE、Scopus等丨期刊简介《EUPHYTICA》是一本由Springer Netherlands出版的国际性学术期刊,创刊于1952年,在植物育种领域历史悠久,非OA期刊。目前位于农林科学大…...

Zemax转CODEV文件

点击确定,重新打开zemax打开源文件,另存为.zmx打开CODE V此处粘贴.zmx文件的地址,并且注意删除引号...

复制一个链接,1分钟提取视频全文——视频转文字我用了半年

信息焦虑这件事,天花板很高。每天刷视频、收藏课程、囤教程,感觉自己在学习。但一周后,能复述出来的内容——不超过 3 条。大多数人的卡点不是「没有好内容」。是内容进来了,但没有真正被处理过。这篇内容,想认真说一个…...

Redis(Remote Dictionary Server)的应用场景与使用方法(基于内存的高性能NoSQL数据库,支持持久化,并提供多种数据结构)RDB、AOF、主从复制、哨兵、集群

文章目录Redis 的应用场景与使用方法详解一、Redis 简介二、Redis 典型应用场景1 缓存(Cache)2 分布式会话(Session 共享)3 分布式锁4 消息队列5 排行榜系统6 限流系统7 实时统计三、Redis 基本使用方法1 安装 Redis2 基本数据操作…...

德电推出全球首个“多轨物联网漫游”:地面与太空首次“无缝切换”

2026年2月13日,德国电信(Deutsche Telekom)在巴塞罗那世界移动通信大会召开前夕宣布:该公司已成为全球首家提供多轨物联网(IoT)漫游服务的移动网络运营商。这意味着物联网设备可以在地面移动网络与卫星网络…...

【案例共创】华为云码道生成表格提取助手,百份Word表格一键提取,秒变Excel!

本案例由开发者:banjin提供,华为开发者空间案例中心优化并收录。 最新案例动态,请查阅【案例共创】华为云码道生成表格提取助手,百份Word表格一键提取,秒变Excel!。小伙伴们快来进行实操吧! 一…...

OpenClaw Token深度优化:节省50%+成本

OpenClaw作为一款强大的AI自动化工具,其Token消耗问题已成为许多用户面临的实际挑战。一个典型的OpenClaw会话可能从最初的几百Token迅速增长到几万甚至几十万,导致成本飙升和响应延迟。本文将从技术原理、配置优化和使用习惯三个维度,提供一…...

深度优先搜索(dfs)

深度优先搜索 1 什么是图的遍历 图的遍历(Graph Traversal): 指的是从图中的某一个顶点开始,按照一定规则访问图中的所有顶点,并且每个顶点只访问一次的过程。 简单理解: 就像在一个由很多点和线组成的网络…...

JAVA进阶-锁

1.悲观锁和乐观锁悲观锁:在修改数据时,一定有别的线程来使用,一定会发生并发冲突,所以在获取数据的时候会加锁。JAVA中的synchronized和lock都是悲观锁。乐观锁:在修改数据时,一定没有别的线程来使用&#…...

Cesium快速入门到精通系列教程二十三:综合

一、viewer.cesiumWidget.container.appendChild() 把你自定义的 HTML 元素(弹窗、按钮、图标等)添加到 Cesium 画布的容器里,让它显示在 3D 地球场景上。 // 1. 创建一个自定义弹窗 div const infoDiv = document.createElement(div); infoDiv.style.position = absolute…...

JAVA数据结构 DAY8-堆

本系列可作为JAVA学习系列的笔记,文中提到的一些练习的代码,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 点赞关注不迷路!您的点赞、关注和收藏是对小编最大的支持和鼓励! 系列文章目录…...

2026-03-17 每日作战任务:RAG 语料高效切分(Text Chunking)与处理

2026-03-17 每日作战任务:RAG 语料高效切分(Text Chunking)与处理每日学习代码关联仓库地址:https://gitee.com/lqx_learn/java-ai.git一、 业务场景 昨天我们运用 JDK 17 的 FileChannel 与 MappedByteBuffer,实现了大…...

Android Studio 安装教程(Windows 超详细图文版)

本教程将从 准备工作→ 下载 → Android Studio安装 → SDK配置 → 创建第一个项目 全流程讲解,适合 AndroidAndroid开发零基础入门。 一、Android Studio简介 Android Studio 是 Google 官方推出的 Android应用开发IDE,用于开发 Android APP。它基于 I…...

SPI子系统源码剖析--(2)Spi_Master驱动框架

1. spi_masterspi_master对应spi控制器,是对引脚的管理,同时可以通过cs引脚选择从设备发送消息2. SPI传输概述1.1 数据组织方式使用SPI传输时,最小的传输单位是"spi_transfer",对于一个设备,可以发起多个spi…...