gobridge

0006 — DLQ redrive at-most-once

Status: superseded by 0015 — the shipped redrive injects first and deletes after a confirmed inject (at-least-once); the claim-by-delete design below is no longer what the code does Date: 2026-07-03 Deciders: GoBridge core

Context

DLQ redrive replays a dead-lettered message back onto its route. The operation runs from the admin API under conditions that are hostile to naive replay:

Replaying the message and then deleting the entry risks double delivery under retries and concurrent redrives. Injecting it back onto the whole route re-delivers it to the N-1 bindings that never failed.

Decision

Claim by deleting first, inject second, and confine the replay to the one binding that failed. The design lives in httpapi/admin_dlq.go; the wire contract is documented in spec/httpapi/components.yaml:425-455.

Consequences

Rejected alternatives