企业微信二次开发实战:如何搭建一个自动化消息处理系统
消息自动化不是写几个回调处理器就完事。消息量大了之后超时、重复、乱序、积压这些问题会一个个冒出来。我们从一个简单的回调服务演进到能扛日均十万条消息的处理系统中间加了队列、状态机、幂等、降级四层保障。这篇讲系统架构和每层解决的问题。底层用的是Eyun 平台开放的企微 API凭证在Eyun 平台首页开通Webhook 收消息message 模块发消息。系统架构四层拆解系统分四层接入层、队列层、处理层、发送层。接入层只做一件事收 Webhook 回调验签去重落库推队列。5 秒内返回 200不做任何业务处理。队列层用 Redis List按会话uin 或 roomId分队列。同一会话的消息串行处理不同会话并行既保序又保吞吐。处理层从队列取消息做意图识别、业务调用、生成回复。处理结果发回发送层。发送层调 message/sendText 或 sendRichText 发消息发完存流水。幂等delivery_id 去重回调至少一次投递同一条消息可能推多次。用X-Eyun-Delivery请求头做去重键Redis SET NX 判断24 小时内只处理一次。delivery_id request.headers.get(X-Eyun-Delivery) if not redis.setnx(fmsg:{delivery_id}, 1): return ok # 重复投递直接跳过 redis.expire(fmsg:{delivery_id}, 86400)去重放在接入层处理层不用关心重复问题。消息体字段在开发文档里有完整说明。保序按会话串行客户连发三条消息如果并发处理可能乱序回复。按会话分队列同一 uin 的消息进同一个队列消费线程串行处理。实现上用 Redis 的lpush入队、brpop阻塞出队。多个消费者轮询多个队列同一队列只有一个消费者在处理。降级处理超时回兜底处理层调业务接口或模型可能超时。单条消息处理超过 3 秒走降级逻辑——回正在处理请稍候后台异步重试结果出来后再补发。降级保证用户不会等太久也不会因为一次超时导致整条链路阻塞。监控四个核心指标系统稳定不稳看四个数回调接收量每分钟收到多少条突然下降说明回调链路有问题队列积压量积压超过阈值告警说明处理速度跟不上处理成功率低于 99% 告警端到端延迟从收到到回复超过 5 秒告警这四个数稳定系统就基本稳定。接口字段在开发文档里有完整说明。架构的价值在可扩展四层拆开后每层可以独立扩展。消息量大了加处理消费者发送慢了加发送线程队列满了换 Kafka。系统从日均几千条到十万条只加了机器没改架构。

相关新闻

AI求解器:用神经网络替代传统方程求解

AI求解器:用神经网络替代传统方程求解

1. 项目概述:当AI开始“算”而不是“写”方程你有没有过这种时刻:面对一个物理建模里的非线性微分方程组,手推解析解卡在第三步;调试一个控制算法时,雅可比矩阵求导反复出错;或者只是想快速知道某个复杂函数…

2026/10/14 9:50:29 阅读更多 →
Agent Infra:智能体基础设施的工程战场与工程师入场券

Agent Infra:智能体基础设施的工程战场与工程师入场券

1. 当所有人盯着模型参数时,真正的工程战场已经转移了过去一年多,我身边做算法的朋友聊天话题几乎被两件事占满:一是模型又刷新了什么榜单,二是推理成本又降了多少。但如果你真的在工业环境里交付过基于大模型的系统,就…

2026/10/14 9:50:29 阅读更多 →
基于Python的微博舆情分析与话题热度预测毕设实战指南

基于Python的微博舆情分析与话题热度预测毕设实战指南

简介:这份资源是面向计算机、电子信息工程、数学等专业大学生的课程设计或毕业设计参考资料,聚焦新浪微博#新冠疫情话题的舆情分析与话题热度预测。项目经导师指导并认可通过,适合作为大作业、期末课设或毕设的完整参考方案,帮助读…

2026/10/14 9:49:28 阅读更多 →

最新新闻

Shell脚本多行注释技巧与工程实践

Shell脚本多行注释技巧与工程实践

1. Shell脚本多行注释的必要性与挑战 在Bash和KornShell(KSH)脚本开发中,我们经常遇到需要临时禁用大段代码或添加详细说明文档的情况。与大多数编程语言不同,Shell脚本原生并不支持类似C语言的/* */或Python的 这样的多行注释语法…

2026/10/14 10:44:53 阅读更多 →
Hadoop发行版选型实战:CDH、HDP与原生版本的生产差异

Hadoop发行版选型实战:CDH、HDP与原生版本的生产差异

1. 为什么今天还要谈Hadoop发行版的选型问题?很多人以为Hadoop已经“过时”了——Spark火了,Flink成了实时计算新宠,云厂商纷纷主推托管数据湖方案,连Kubernetes上跑大数据作业都成了常态。但现实是:某省政务云平台仍在…

2026/10/14 10:44:53 阅读更多 →
MATLAB OCR字符识别实战:从预处理到自定义训练与避坑指南

MATLAB OCR字符识别实战:从预处理到自定义训练与避坑指南

简介:本资源是一套基于MATLAB实现的OCR字符识别完整项目代码,面向具备一定图像处理基础、希望动手实践光学字符识别流程的高校学生与算法初学者。内容围绕图像预处理、行列分割、字符切割、特征提取、模板匹配与结果输出等环节展开,并配有模板…

2026/10/14 10:44:53 阅读更多 →
Unity3D垃圾分类教育系统开发与多模态交互设计

Unity3D垃圾分类教育系统开发与多模态交互设计

1. 项目概述:Unity3D垃圾分类教育系统开发实录去年参与某社区环保项目时,我负责开发了一套垃圾分类互动教育系统。这个基于Unity3D的解决方案包含四大核心模块:分类知识库、智能查询、宣传短片和交互界面。不同于传统宣传册,我们通…

2026/10/14 10:44:53 阅读更多 →
从单节点到分片集群:MongoDB水平扩展与Spring Boot实践

从单节点到分片集群:MongoDB水平扩展与Spring Boot实践

大数据量的业务做到中期,MongoDB 单机常常会先报警。磁盘空间、CPU、IOPS 总有一个先扛不住。我最近刚帮某团队把核心订单数据从单节点迁移到 Linux 环境下的 MongoDB 分片集群,顺带把 Spring Boot 服务的访问链路也彻底理了一遍。这篇就把分片集群从架构…

2026/10/14 10:44:53 阅读更多 →
rea三段式流水线设计:从raw到aggregate的通用数据处理模式

rea三段式流水线设计:从raw到aggregate的通用数据处理模式

1. 从“rea”这个标题说起:一个被低估的通用缩写第一次看到“rea”这个标题,很多人会愣一下——三个字母,没有上下文,没有说明,甚至连大小写都不明确。但恰恰是这种极简的命名方式,在技术圈和创意圈里非常常…

2026/10/14 10:43:52 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →