Retry queue without dead-letter queue
errorretry-queue-without-dlq
A retry queue is where poison messages end up. With no dead-letter queue they are retried forever or dropped in silence, and nobody ever looks at the failed payment.
- Severity
- error
- Selects
- every node of kind queue
- Components in scope
- 24
It looks at every node of kind queue, and fires when:
- — all of these hold:
- — the node's `role` is "retry"
- — the node's `deadLetterQueue` is false
Retry queue '{{node.id}}' has no dead-letter queue. Messages that keep failing must be parked for manual investigation.Reference designs whose broken twin names this rule in its header. The gate reads the same header, and fails when a rule no design trips.
# yaml-language-server: $schema=../schema/rule.schema.json # A retry queue is where poison messages end up. Without a dead-letter queue they are # retried forever or silently dropped, and nobody investigates the failed payment. # Tripped by: designs/payment-system.broken.yaml schemaVersion: "1" type: "rule" id: "retry-queue-without-dlq" severity: "error" select: node: kind: "queue" when: all: - prop: "role" equals: "retry" - prop: "deadLetterQueue" equals: false message: "Retry queue '{{node.id}}' has no dead-letter queue. Messages that keep failing must be parked for manual investigation."