CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
数据存储死信队列兜底

【数据存储】死信队列:处理失败消息的兜底机制

2026-09-23 05:48 作者:996 技术组 0 阅读 996引擎Lua教程传奇脚本数据存储死信队列兜底

实战应用:用在哪里

消息处理失败就丢弃,等于把偶发故障变成玩家资产损失。死信队列给失败消息一条后路:重试三次仍失败的消息转入死信队列单独存放,值班定期核查死信水位,人工修复后重新投递,任何一条消息都有来处和去处。

失败消息的死信入队

处理失败的消息连同错误原因写入死信队列,重试计数同步累加,三次重试都失败就停止自动投递,转人工核查。

lua
local DEAD = {}
local function toDeadLetter(msg, err)
    table.insert(DEAD, { msg = msg, err = err, retry = 0 })
end
local function process(msg)
    local ok, err = pcall(handle, msg)
    if not ok then
        toDeadLetter(msg, tostring(err))
    end
end

死信重试与人工兜底

死信队列每小时重试一轮,重试满三次的消息标记为人工处理,值班从死信清单里逐条修复后清出队列。

lua
setontimerex(210, 3600)
function ontimer210()
    local kept = {}
    for _, d in ipairs(DEAD) do
        if d.retry < 3 then
            d.retry = d.retry + 1
            local ok = pcall(handle, d.msg)
            if not ok then
                table.insert(kept, d)
            end
        else
            table.insert(kept, d)
            sendmail("#值班老张", 943, "死信需人工处理", "积压 " .. #kept .. " 条", "")
        end
    end
    DEAD = kept
end

验证与监控

构造必失败消息验证三次重试后进入人工清单;可修复消息人工处理后成功出队;死信水位每小时归档一次。监控死信队列的水位曲线,水位上升的斜率对应故障的严重程度,值班按斜率排优先级。

踩坑记录

死信只存了消息没存错误原因,人工排查时不知道失败在哪一步,错误信息随消息一起入死信。重试没有间隔控制,三次重试在一秒内打完,故障还没恢复重试就耗尽了,重试间隔拉到 600 秒。人工修复后的消息重复入队,队列按消息唯一号去重。死信水位只统计数量不分类别,支付类死信与聊天类死信混在一起,支付类的优先级被拉高处理。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

Lua实战选择排序装备评分排行榜

【Lua实战】选择排序:装备评分榜的局部有序

实战应用:用在哪里 装备回收商 NPC 每天按评分收购玩家的装备,裁决之杖、骨玉权杖按攻击、持久加权打分,榜上只要前五名。数…

2026-09-23 10:57 996 技术组 · 0 阅读
玩法策划沙巴克攻城皇宫归属

【玩法策划】沙巴克攻城:城门耐久与皇宫归属的规则设计

实战应用:用在哪里 沙巴克攻城是全服行会战的最高舞台:攻方砸开城门、抢占皇宫,守方依托城墙与复活点反打。规则设计的关键是节奏…

2026-09-23 10:57 996 技术组 · 0 阅读
玩法策划影分身分身真身识别

【玩法策划】影分身:分身嘲讽与真身识别的玩法设计

实战应用:用在哪里 影分身玩法给法师职业补上生存短板:危急时刻召唤四个影分身分担仇恨,敌人需要在六格范围内分辨真身,猜错就浪…

2026-09-23 10:57 996 技术组 · 0 阅读
网络通信消息重试退避信令

【网络通信】消息重试:关键信令的确认与退避重发

实战应用:用在哪里 组队邀请、行会宣战这类关键信令丢了没有兜底,玩家只能反复手点,高峰期体验很差。重试机制给信令加确认回执:…

2026-09-23 10:57 996 技术组 · 0 阅读
运维发布开区队列预热

【运维发布】滚动开区:分批开服的队列与预热流程

实战应用:用在哪里 新资料片上线首日预约量常是日常十倍,一口气全开会让数据库与登录网关同时过载。滚动开区把开区动作排成队列:…

2026-09-23 10:57 996 技术组 · 0 阅读
性能调优广播节流合帧

【性能调优】广播节流:跑动动作的合帧下发

实战应用:用在哪里 百人同屏的沙巴克外围战场,每个玩家每秒跑动会触发数次位置更新,全部即时下发时广播量随人数平方增长,网关先…

2026-09-23 10:57 996 技术组 · 0 阅读