本文引用了45岁老架构师尼恩的技术分享,即时通讯网有修订和重新排版。
cover-2-opti.png (9.85 KB, 下载次数: 1)
下载附件 保存到相册
3 天前 上传
- 消息发不出去 → 用户以为被无视; - 或者重试太多 → 对方收到一堆重复“在吗?”; - 最后用户体验崩了,客服工单爆了。
“宁可慢点,也不能丢;就算重发,也不能重复。”
db.saveLocalMsg(msg); // 先落库,保命 boolean sendOk = network.send(msg); if (!sendOk) { scheduleRetry(msg, 1000); // 发失败?排队重试 }
就像快递发货单:客户签收了,你才能撕票。
rocketMQ.send(msg); // 必须落盘,断电也不怕 replicaService.syncTo3Replicas(msg); // 多副本容灾 response.sendAck(msg.getUniqueKey()); // 此时才能回 ACK
“我已经处理过了,再来一遍怎么办?”
String uniqueKey = msg.getUniqueKey(); if (redis.setNx(uniqueKey, "processed", 86400)) { processMsg(msg); // 第一次来,正常处理 } else { log.info("重复消息,忽略:{}", uniqueKey); }
2-1.png (34.22 KB, 下载次数: 1)
来源:即时通讯网 - 即时通讯开发者社区!
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
一套纯血鸿蒙NEXT产品级IM系统。
详细介绍 / 产品截图 / 安装
精华主题数超过100个。
积极发起、参与各类话题的讨论等,主题、发帖内容较有价值。
连续任职达1年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
Copyright © 2014-2026 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.125000 second(s), 42 queries , Gzip On.