跳转到主要内容

号码状态查询失败条目:重试上限与死信

手机号状态查询的批量任务收尾时总剩下一千多条失败,很多人第一反应是把失败条目原样再提交一遍。这篇讲失败要分三类、重试上限怎么和批次预算挂钩、死信队列里该放哪几样东西,以及重试是怎么悄悄把账单抬上去的。

架构与性能约 1700 字

🎁 免费试用手机号码状态查询 API

直连三网运营商 · 准确率 ≥99.9% · 支持携号转网识别 · 按次计费即买即用

立即免费试用 →

上午十点,业务方的名单还压在队列里。两万条号码的批量任务跑完了,结果表里少了一千八百条,值班同学把失败的那批原样再提交一遍,第二轮回来还是失败;第三轮提交完,任务依旧收不了尾,接口用量已经比第一轮多出三成。这类场面在批量系统的收尾阶段很常见:任务卡着不结束,新项目的上线时间被它拖着,排查方向还会被失败数字带偏——因为那批失败里,真正能靠重试救回来的只是一部分。

失败条目被反复扔回队列,是集成里最常见的一处浪费。重试的前提是「下一次有更大概率成功」,前提不成立时,重试只是把噪声放大、把账单抬高。

号码状态查询失败条目的三类分法对照

第一类是临时性失败:限流、连接超时、服务端返回错误、网络中断。这类错误的共同点是过一会儿再来可能就过了,退避之后重试是有效手段。

第二类是提交层的问题:号码格式没归一化、字段顺序错、鉴权凭据过期。这类错误重试一百次结果都一样,正确动作是停下来改,改完再重新提交。

第三类要单独说:另有一类号码不在重试的救济范围内——境外运营商号码、装在设备里的物联网卡、转售企业放出的号段,它们无论提交几次都拿不到状态,应当直接归入「无结论」一类,不必再占用重试预算。

三类的区分做在入口,比事后重试便宜得多。具体做法是先把错误码归一次类,再让不同类走不同通道:一条通道负责退避重试,一条负责直接落无结论,一条负责提示人工介入。很多人把这一步省了,于是在收尾阶段一次性付出代价。

入口分类能省多少,可以参考手机号在网状态批量查询:一次多少、量怎么算里那份口径。

上限不是拍一个「三次」,而是和批次的时间预算挂钩:整批给多长的完成窗口,单次退避多长,能容纳几轮,这几个数字要一起写进集成文档。窗口紧的任务,重试次数就得少,宁可早一点进死信,也不要让一个分片拖住整批。

配上四条约束更稳:退避时间加随机抖动,避免所有处理单元同时到点重试、自己造出第二个尖峰;重试流量走单独的通道,不和主批次抢同一份配额;重试次数与错误类型绑定,限流类可以多给一轮,参数类一次都不给;上限一旦到达就写死信,绝不允许无限循环,也不要在代码里悄悄吞掉最后一次失败。

号码状态查询重试上限的四条约束

写死信这件事本身也有节奏。同一个批次里,死信条数占比超过约定阈值时应当触发告警,而不是等收尾对账时才发现。

按次计费的口径下,每次调用都会计一次量,失败不会因为没拿到结论而免单。一千八百条失败号码重试三轮,账面上就是五千多次调用;如果这批里八成本来就没有状态可查,那五千多次里有四千多次是白花出去的量。这笔账在压测阶段看不出来,只有账单出来才看得见。

所以省量的优先级里,先分类、再重试排在最前面,比加缓存、做去重都更直接。计量方式与计费口径以商品详情页文档为准,内部估算不要自己另立一套;对账时对不上的差额,多半也是这么来的,号码状态查询账单对不上:先核对四个计费口径里给过核对顺序。

死信不是垃圾桶,它是这批号码的完整病历。至少要放:号码(或脱敏后的号码)、所属批次号与分片号、错误码与错误描述、已经重试过的次数、首次失败时间与末次失败时间、名单来源标识、当前处理状态。

少了批次号,第二天没人能说清这批号码是谁提交的;少了错误码分布,就分不清该改代码还是该等限流恢复。死信条目的字段定义如果和上游返回对不上,优先按文档对齐,不要用内部叫法重新命名一遍。

号码状态查询死信条目的三条出路

一条是归因后重查:错误码指向限流或网络,换一个时间窗补跑一次,补跑同样受上限约束。

一条是直接落无结论:那些本来就没有状态可查的号码,按约定写好原因码,进结论表,并在给业务的交付说明里单列一行。

一条是交人工确认:数量不多但业务上有特殊价值的名单,由业务决定是否换渠道核查。

三条出路的数量都要在日报里出现。只统计成功数、让死信静静待在库里,是同类问题反复发生的主要原因。

一条简单公式:提交条数减去成功条数、无结论条数、仍在重试中的条数,剩下的就是躺在死信里的条数,四类数字对齐,批次才算结束。如果失败率长期在百分之三以上,而且以提交层问题为主,那问题不在重试策略上,先回头查入口校验。

这条链路如果不打算自己搭,可以直接接现成服务起步:直连三网,返回八种状态,支持携号转网识别,鉴权走请求头携带 AppCode,按次计费、即买即用,字段与错误码含义以商品详情页文档为准——【手机号在网状态 API】。重试策略仍然要自己写,因为只有你知道哪些号码值得再试一次。

文章评论

发表评论

请先注册/登录后评论