CMDCGateway.Webhook.DeadLetter.DETS (cmdc_gateway v0.4.2)

Copy Markdown View Source

Webhook dead-letter DETS backend — 默认实现。

把派发最终失败的 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 操作成功)