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
What it checks

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
Message
Queue '{{node.id}}' receives async traffic but has no dead-letter queue.

{{node.id}} style paths are filled in from the node, the edge or the design the finding is about.

Applies to · 24 components
Tripped by · 17

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.

Source
# 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."

The same page as markdown, for an agent: /catalogue/rules/queue-missing-dlq.md