Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,16 @@
"management/runs/update-metadata"
]
},
{
"group": "Queues API",
"pages": [
"management/queues/list",
"management/queues/retrieve",
"management/queues/pause",
"management/queues/concurrency-override",
"management/queues/concurrency-reset"
]
},
{
"group": "Schedules API",
"pages": [
Expand Down
4 changes: 4 additions & 0 deletions docs/management/queues/concurrency-override.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: "Override Concurrency Limit"
openapi: "v3-openapi POST /api/v1/queues/{queueParam}/concurrency/override"
---
4 changes: 4 additions & 0 deletions docs/management/queues/concurrency-reset.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: "Reset Concurrency Limit"
openapi: "v3-openapi POST /api/v1/queues/{queueParam}/concurrency/reset"
---
4 changes: 4 additions & 0 deletions docs/management/queues/list.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: "List Queues"
openapi: "v3-openapi GET /api/v1/queues"
---
4 changes: 4 additions & 0 deletions docs/management/queues/pause.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: "Pause or Resume Queue"
openapi: "v3-openapi POST /api/v1/queues/{queueParam}/pause"
---
4 changes: 4 additions & 0 deletions docs/management/queues/retrieve.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: "Retrieve Queue"
openapi: "v3-openapi GET /api/v1/queues/{queueParam}"
---
126 changes: 126 additions & 0 deletions docs/queue-concurrency.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -226,3 +226,129 @@ export const subtask = task({
```

When the parent task reaches the `triggerAndWait` call, it checkpoints and transitions to the `WAITING` state, releasing its concurrency slot back to both its queue and the environment. Once the subtask completes, the parent task will resume and re-acquire a concurrency slot.

## Managing queues with the SDK

The SDK provides a `queues` namespace that allows you to manage queues programmatically. You can list, retrieve, pause, resume, and modify concurrency limits for queues.

<Note>
Import from `@trigger.dev/sdk`:
```ts
import { queues } from "@trigger.dev/sdk";
```
</Note>

### Listing queues

You can list all queues in your environment with pagination support:

```ts
import { queues } from "@trigger.dev/sdk";

// List all queues (returns paginated results)
const allQueues = await queues.list();

// With pagination options
const pagedQueues = await queues.list({
page: 1,
perPage: 20,
});
```

### Retrieving a queue

You can retrieve a specific queue by its ID, or by its type and name:

```ts
import { queues } from "@trigger.dev/sdk";

// Using queue ID (starts with "queue_")
const queueById = await queues.retrieve("queue_1234");

// Using type and name for a task's default queue
const taskQueue = await queues.retrieve({
type: "task",
name: "my-task-id",
});

// Using type and name for a custom queue
const customQueue = await queues.retrieve({
type: "custom",
name: "my-custom-queue",
});
```

The queue object contains useful information about the queue state:

```ts
{
id: "queue_1234", // Queue ID
name: "my-task-id", // Queue name
type: "task", // "task" or "custom"
running: 5, // Currently executing runs
queued: 10, // Runs waiting to execute
paused: false, // Whether the queue is paused
concurrencyLimit: 10, // Current concurrency limit
concurrency: {
current: 10, // Effective limit
base: 10, // Default limit from code
override: null, // Override value (if set)
overriddenAt: null, // When override was applied
overriddenBy: null, // Who applied the override
}
}
```

### Pausing and resuming queues

You can pause a queue to prevent new runs from starting. Runs that are currently executing will continue to completion.

```ts
import { queues } from "@trigger.dev/sdk";

// Pause a queue using its ID
await queues.pause("queue_1234");

// Or using type and name
await queues.pause({ type: "task", name: "my-task-id" });
await queues.pause({ type: "custom", name: "my-custom-queue" });
```

To resume a paused queue and allow new runs to start:

```ts
import { queues } from "@trigger.dev/sdk";

// Resume a queue using its ID
await queues.resume("queue_1234");

// Or using type and name
await queues.resume({ type: "task", name: "my-task-id" });
await queues.resume({ type: "custom", name: "my-custom-queue" });
```

### Overriding concurrency limits

You can temporarily override a queue's concurrency limit. This is useful for scaling up or down based on demand:

```ts
import { queues } from "@trigger.dev/sdk";

// Set concurrency limit to 5
await queues.overrideConcurrencyLimit("queue_1234", 5);

// Or using type and name
await queues.overrideConcurrencyLimit({ type: "task", name: "my-task-id" }, 20);
```

To reset the concurrency limit back to the base value defined in your code:

```ts
import { queues } from "@trigger.dev/sdk";

// Reset concurrency limit to the base value
await queues.resetConcurrencyLimit("queue_1234");

// Or using type and name
await queues.resetConcurrencyLimit({ type: "task", name: "my-task-id" });
```
Loading