Queue without dead-letter queue
errorqueue-missing-dlq
A queue that receives asynchronous traffic and has no dead-letter queue either drops poison messages or retries them forever. Neither outcome leaves anything for a human to investigate.
- 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 `deadLetterQueue` is false
- — the node has at least one asynchronous incoming edge
Queue '{{node.id}}' receives async traffic but has no dead-letter queue.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.
amazon-orderreferencecanva-uploadsreferenceduolingo-backendreferencefacebook-messengerreferencegithub-mysqlreferencegitlab-architecturereferencegojek-platformreferencegoogle-mapsreferenceinstagram-feedreferencemonzo-platformreferenceorder-processingreferencepayment-systemreferencepinterest-feedreferencereddit-feedreferenceshopify-flash-salereferencewhatsapp-messagingreferenceyoutube-upload-playbackreference
# yaml-language-server: $schema=../schema/rule.schema.json # A queue that receives asynchronous traffic and has no dead-letter queue drops or # infinitely retries poison messages. Tripped by designs/order-processing.broken.yaml. schemaVersion: "1" type: "rule" id: "queue-missing-dlq" severity: "error" select: node: kind: "queue" when: all: - prop: "deadLetterQueue" equals: false - hasEdge: direction: "in" mode: "async" message: "Queue '{{node.id}}' receives async traffic but has no dead-letter queue."