掌控消息全链路(4)——RabbitMQ/Spring-AMQP高级特性详解之事务与消息分发

掌控消息全链路(4)——RabbitMQ/Spring-AMQP高级特性详解之事务与消息分发
在这里插入图片描述

🔥我的主页:九转苍翎⭐️个人专栏:《Java SE》《Java集合框架系统精讲》《MySQL高手之路:从基础到高阶》《计算机网络》《Java工程师核心能力体系构建》《RabbitMQ理论与实践》天行健,君子以自强不息。


1.事务

AMQP(高级消息队列协议)实现了事务机制,主要用于确保消息的原子性发布和确认。换言之,它允许你将多个操作(如发送消息、确认消息)绑定在一起,要么全部成功,要么全部失败

发送消息

@RestController@RequestMapping("/producer")publicclassProducerController{@Resource(name ="transRabbitTemplate")privateRabbitTemplate transRabbitTemplate;@Transactional@RequestMapping("/trans")publicStringtrans(){ transRabbitTemplate.convertAndSend("",Constants.TRANS_QUEUE,"trans test ---> 1");int num =5/0; transRabbitTemplate.convertAndSend("",Constants.TRANS_QUEUE,"trans test ---> 2");return"发送成功";}}
在这里插入图片描述


Spring Boot的RabbitMQ自动配置默认会确认模式,但RabbitMQ不允许同一个通道同时使用事务模式和确认模式,所以需要确保publisher confirms被禁用

spring:rabbitmq:publisher-confirm-type: none publisher-returns:false

配置RabbitTemplate和事务管理器

@ConfigurationpublicclassRabbitTemplateConfig{@Bean("transRabbitTemplate")publicRabbitTemplatetransRabbitTemplate(ConnectionFactory connectionFactory){RabbitTemplate rabbitTemplate =newRabbitTemplate(connectionFactory); rabbitTemplate.setChannelTransacted(true);return rabbitTemplate;}@BeanpublicRabbitTransactionManagerrabbitTransactionManager(ConnectionFactory connectionFactory){returnnewRabbitTransactionManager(connectionFactory);}}

配置队列

@ConfigurationpublicclassRabbitMQConfig{@Bean("transQueue")publicQueuetransQueue(){returnQueueBuilder.durable(Constants.TRANS_QUEUE).build();}}

2.消息限流

消息限流(Flow Control) 是RabbitMQ防止生产者发送消息速度超过消费者处理能力,导致消息积压和系统崩溃的保护机制

发送消息

@RestController@RequestMapping("/producer")publicclassProducerController{@Resource(name ="rabbitTemplate")privateRabbitTemplate rabbitTemplate;@RequestMapping("/qos")publicStringqos(){for(int i =0; i <20; i++){ rabbitTemplate.convertAndSend(Constants.QOS_EXCHANGE,"qos","qos test:"+ i);}return"发送成功";}}

配置消费者

@Component@Slf4jpublicclassQosListener{@RabbitListener(queues =Constants.QOS_QUEUE)publicvoidhandMessage(Message message,Channel channel)throwsIOException{long deliveryTag = message.getMessageProperties().getDeliveryTag();try{ log.info("接收到消息:{},deliveryTag:{}",newString(message.getBody(),StandardCharsets.UTF_8), deliveryTag); log.info("处理成功");// channel.basicAck(deliveryTag, true); // 消费者不确认消息}catch(Exception e){ channel.basicNack(deliveryTag,true,true);}}}

限制每个消费者未确认的最大消息数

spring:rabbitmq:listener:simple:acknowledge-mode: manual # 消费者确认机制prefetch:5

声明和配置交换器、队列和绑定关系

@ConfigurationpublicclassRabbitMQConfig{@Bean("qosQueue")publicQueueqosQueue(){returnQueueBuilder.durable(Constants.QOS_QUEUE).build();}@Bean("qosExchange")publicDirectExchangeqosExchange(){returnExchangeBuilder.directExchange(Constants.QOS_EXCHANGE).build();}@Bean("qosBinding")publicBindingqosBinding(@Qualifier("qosExchange")DirectExchange directExchange,@Qualifier("qosQueue")Queue queue){returnBindingBuilder.bind(queue).to(directExchange).with("qos");}}
在这里插入图片描述

Read more

从海量时序数据到无人值守:数据库在新能源集控系统中的架构实践

从海量时序数据到无人值守:数据库在新能源集控系统中的架构实践

文章目录 * 引言 * 关于金仓数据库 * 金仓数据库在新能源行业的技术解读 * 1. 应对海量时序数据:分区存储与高效查询 * 2. 支撑高并发访问:读写分离与自治调优 * 3. 保障业务连续性:跨地域高可用与容灾 * 4. 实现平滑迁移:高度兼容与自动化工具 * 案例分析:金仓数据库赋能新能源智慧运维 * 案例一:中广核新能源生产运维系统——应对“整合、高并发、高可用”三大挑战 * 案例二:国家能源集团龙源电力——186个新能源场站集控系统国产化替代 * 案例三:国家电投集团甘肃新能源——“无人值守”风电场集控系统 * 结语 引言 谈到“双碳”与能源革命,风电,光伏这些新能源产业显然是当下最为炙手可热的风口,若想在该赛道跑得更远,更快,数字化和智能化转型并非可选,而是必备功课,要知道,从远程操控成千上万台风电机组,到及时分析大量的设备数据,直至把整个生产运维流程管理得井井有条,哪一步能离开稳定,高效且安全的数据“大后方”

By Ne0inhk
智谱GLM-5深度解析:稀疏架构革新与2026年开发者实操全指南(附可运行代码)

智谱GLM-5深度解析:稀疏架构革新与2026年开发者实操全指南(附可运行代码)

一、背景引入:2026年大模型落地痛点与GLM-5的破局意义 2026年,AI大模型赛道正式告别“参数内卷”,迈入效率与规模双轮驱动的新阶段,ZEEKLOG平台数据显示,开发者核心痛点集中于三点:算力成本居高不下、长文本处理时延过高、国产模型本土化适配不足。 2月11日,智谱AI正式发布新一代旗舰大模型GLM-5,此前通过OpenRouter平台匿名曝光的“Pony Alpha”,经开发者验证确认为其测试版,上线首日即处理40亿token、接收20.6万请求,引爆开发者圈层。 作为适配2026年“稀疏架构+AI原生应用”趋势的核心模型,GLM-5凭借DSA稀疏注意力、MoE混合专家架构等革新,完美解决开发者“高性能与低成本不可兼得”的核心诉求。 二、GLM-5核心技术原理:架构革新与能力升级 GLM-5的核心竞争力源于底层架构的重构与工程化优化,相较于上一代GLM-4.7,在架构设计、推理效率、能力覆盖上实现代际跨越,关键技术原理围绕“稀疏化、高效化、本土化”三大核心展开。 2.1 核心架构:DSA稀疏注意力+MoE混合专家模型

By Ne0inhk
实测百灵大模型Ling-2.5-1T:混合线性架构下的全能开发与办公新体验

实测百灵大模型Ling-2.5-1T:混合线性架构下的全能开发与办公新体验

前言 在当前的大模型赛道中,单纯的参数竞赛已逐渐让位于架构创新与场景落地的比拼。作为国内首个采用**混合线性架构(Hybrid Linear Architecture)**的万亿参数级模型,Ling-2.5-1T 的发布引起了技术圈的广泛关注。这种架构旨在兼顾Transformer的通用性与线性注意力机制在长文本、推理效率上的优势。 本次评测将基于 Ling Studio 这一核心场域,从开发者视角的代码生成、咨询顾问视角的深度逻辑分析、极客视角的个性化交互,以及高阶用户的API生态接入四个维度,对Ling-2.5-1T进行全方位拆解。 一、 开箱:极简主义下的全能控制台 进入 Ling Studio 的主界面,首先映入眼帘的是极度克制的UI设计。没有繁杂的侧边栏干扰,用户的注意力被强制聚焦于屏幕中央的对话框。 https://ling.tbox.cn/chat 这种设计语言在当下的SaaS工具中颇为流行,暗示了产品对核心对话能力的自信。点击输入框左侧的配置按钮,会展开详细的模型配置面板。这里不仅仅是简单的对话,Ling Studio 暴露了包括 联网搜索、时间查询、天

By Ne0inhk