Webhook dead-letter DETS backend — 默认实现(Phase 12M v0.4.1 / 12M.1)。
把派发最终失败的 webhook 写入本地 DETS 文件,BEAM 重启后由
CMDCGateway.Webhook.Dispatcher 自动 reload 并按指数退避重试。
配置
通过 start_link/1 的 opts:
[
file: ~c"/var/cmdc/webhook_dlq.dets", # 必填;DETS 文件路径(charlist)
table: :cmdc_webhook_dlq # 可选;DETS 表名 atom
]文件格式
DETS 表为 :set,key = entry.id,value = entry map(见
CMDCGateway.Webhook.DeadLetter.entry)。
故障保护
- 文件不可写 / corrupted →
init返回{:error, reason},Dispatcher 应降级到「只 log 不重试」并 emit warning - 单次
save_failed/delete/mark_retried失败不会影响主路径 (Webhook.dispatch 不依赖 dead-letter 操作成功)