Examples
DLQ
Get all messages with pagination using cursor
Since the DLQ can have a large number of messages, they are paginated.
You can go through the results using the cursor.
import { Client } from "@upstash/qstash";const client = new Client({ token: "<QSTASH_TOKEN>" });const all_messages = [];let cursor = null;while (true) { const res = await client.dlq.listMessages({ cursor }); all_messages.push(...res.messages); cursor = res.cursor; if (!cursor) { break; }}List messages with filters
import { Client } from "@upstash/qstash";const client = new Client({ token: "<QSTASH_TOKEN>" });// filter and paginate with top-level optionsconst res = await client.dlq.listMessages({ count: 10, order: "latestFirst", filter: { url: "https://example.com" }})// fetch specific DLQ messages by IDconst res2 = await client.dlq.listMessages({ dlqIds: ["dlq-id-1", "dlq-id-2"]})Delete messages from the DLQ
import { Client } from "@upstash/qstash";const client = new Client({ token: "<QSTASH_TOKEN>" });// delete a single messageawait client.dlq.delete("dlqId");// delete multiple messagesawait client.dlq.delete(["dlq-id-1", "dlq-id-2"]);// delete with filterslet cursor: string | undefined;do { const result = await client.dlq.delete({ filter: { url: "https://example.com", responseStatus: 500 }, cursor, }); cursor = result.cursor;} while (cursor);// delete all DLQ messagesdo { const result = await client.dlq.delete({ all: true, cursor }); cursor = result.cursor;} while (cursor);client.dlq.deleteMany() is deprecated. Use client.dlq.delete() with an array of dlqIds or filters instead.
Retry messages from the DLQ
import { Client } from "@upstash/qstash";const client = new Client({ token: "<QSTASH_TOKEN>" });// retry a single messageawait client.dlq.retry("dlqId");// retry multiple messagesawait client.dlq.retry(["dlq-id-1", "dlq-id-2"]);// retry with filterslet cursor: string | undefined;do { const result = await client.dlq.retry({ filter: { queueName: "my-queue" }, cursor, }); cursor = result.cursor;} while (cursor);