@platformatic/job-queue 0.1.0-alpha.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -3
- package/dist/consumer.d.ts +2 -1
- package/dist/consumer.d.ts.map +1 -1
- package/dist/consumer.js +71 -17
- package/dist/consumer.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/producer.d.ts +6 -2
- package/dist/producer.d.ts.map +1 -1
- package/dist/producer.js +38 -2
- package/dist/producer.js.map +1 -1
- package/dist/queue.d.ts +5 -1
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +13 -4
- package/dist/queue.js.map +1 -1
- package/dist/reaper.js +3 -3
- package/dist/reaper.js.map +1 -1
- package/dist/storage/file.d.ts +5 -2
- package/dist/storage/file.d.ts.map +1 -1
- package/dist/storage/file.js +170 -47
- package/dist/storage/file.js.map +1 -1
- package/dist/storage/memory.d.ts +2 -2
- package/dist/storage/memory.d.ts.map +1 -1
- package/dist/storage/memory.js +5 -5
- package/dist/storage/memory.js.map +1 -1
- package/dist/storage/redis.d.ts +2 -2
- package/dist/storage/redis.d.ts.map +1 -1
- package/dist/storage/redis.js +12 -13
- package/dist/storage/redis.js.map +1 -1
- package/dist/storage/types.d.ts +2 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/utils.d.ts +2 -0
- package/dist/storage/utils.d.ts.map +1 -0
- package/dist/storage/utils.js +31 -0
- package/dist/storage/utils.js.map +1 -0
- package/dist/types.d.ts +38 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +1 -4
- package/dist/utils/id.js.map +1 -1
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -44,9 +44,15 @@ await queue.start()
|
|
|
44
44
|
// Enqueue jobs
|
|
45
45
|
await queue.enqueue('email-1', { email: 'user@example.com' })
|
|
46
46
|
|
|
47
|
+
// Optional per-job TTL override for cached result/error
|
|
48
|
+
await queue.enqueue('email-ttl', { email: 'ttl@example.com' }, {
|
|
49
|
+
resultTTL: 5 * 60 * 1000 // 5 minutes
|
|
50
|
+
})
|
|
51
|
+
|
|
47
52
|
// Or wait for the result
|
|
48
53
|
const result = await queue.enqueueAndWait('email-2', { email: 'another@example.com' }, {
|
|
49
|
-
timeout: 30000
|
|
54
|
+
timeout: 30000,
|
|
55
|
+
resultTTL: 24 * 60 * 60 * 1000 // keep this result for 24h
|
|
50
56
|
})
|
|
51
57
|
console.log('Result:', result) // { sent: true }
|
|
52
58
|
|
|
@@ -77,6 +83,7 @@ const queue = new Queue<TPayload, TResult>(config)
|
|
|
77
83
|
| `blockTimeout` | `number` | `5` | Seconds to wait when polling for jobs |
|
|
78
84
|
| `visibilityTimeout` | `number` | `30000` | Milliseconds before a processing job is considered stalled |
|
|
79
85
|
| `resultTTL` | `number` | `3600000` | Milliseconds to cache job results (1 hour) |
|
|
86
|
+
| `afterExecution` | `AfterExecutionHook<TPayload, TResult>` | `undefined` | Hook called after execution and before persisting terminal state |
|
|
80
87
|
| `payloadSerde` | `Serde<TPayload>` | `JsonSerde` | Custom serializer for job payloads |
|
|
81
88
|
| `resultSerde` | `Serde<TResult>` | `JsonSerde` | Custom serializer for job results |
|
|
82
89
|
|
|
@@ -109,7 +116,10 @@ queue.execute(async (job) => {
|
|
|
109
116
|
Enqueue a job (fire-and-forget).
|
|
110
117
|
|
|
111
118
|
```typescript
|
|
112
|
-
const result = await queue.enqueue('job-123', { data: 'value' }
|
|
119
|
+
const result = await queue.enqueue('job-123', { data: 'value' }, {
|
|
120
|
+
maxAttempts: 5,
|
|
121
|
+
resultTTL: 60_000 // optional per-job TTL override (ms)
|
|
122
|
+
})
|
|
113
123
|
|
|
114
124
|
// result.status can be:
|
|
115
125
|
// - 'queued': Job was added to the queue
|
|
@@ -124,12 +134,37 @@ Enqueue a job and wait for the result.
|
|
|
124
134
|
```typescript
|
|
125
135
|
const result = await queue.enqueueAndWait('job-123', payload, {
|
|
126
136
|
timeout: 30000, // Timeout in milliseconds
|
|
127
|
-
maxAttempts: 5
|
|
137
|
+
maxAttempts: 5, // Override default max retries
|
|
138
|
+
resultTTL: 300000 // Optional per-job TTL override (ms)
|
|
128
139
|
})
|
|
129
140
|
```
|
|
130
141
|
|
|
131
142
|
Throws `TimeoutError` if the job doesn't complete within the timeout.
|
|
132
143
|
|
|
144
|
+
`resultTTL` behavior:
|
|
145
|
+
- If provided in `enqueue()` / `enqueueAndWait()`, it overrides the queue default for that job.
|
|
146
|
+
- If omitted, the producer uses the queue default `resultTTL` at enqueue time.
|
|
147
|
+
- For duplicate IDs, the first accepted enqueue defines the TTL for that job.
|
|
148
|
+
|
|
149
|
+
`afterExecution` hook behavior:
|
|
150
|
+
- Runs after a successful execution or after the final failed attempt, before terminal state is persisted.
|
|
151
|
+
- Receives a mutable context object (passed by reference), including `result`/`error` and `ttl`.
|
|
152
|
+
- You can update `context.ttl` to change the stored result/error TTL dynamically.
|
|
153
|
+
- You can replace `context.result` / `context.error` to affect what is persisted.
|
|
154
|
+
- `id` and `status` are informational; changing them has no effect on persistence.
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
const queue = new Queue<{ url: string }, { body: string; maxAgeMs?: number }>({
|
|
158
|
+
storage,
|
|
159
|
+
resultTTL: 60_000,
|
|
160
|
+
afterExecution: async (context) => {
|
|
161
|
+
if (context.status === 'completed' && context.result?.maxAgeMs) {
|
|
162
|
+
context.ttl = context.result.maxAgeMs
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
})
|
|
166
|
+
```
|
|
167
|
+
|
|
133
168
|
##### `queue.cancel(id): Promise<CancelResult>`
|
|
134
169
|
|
|
135
170
|
Cancel a queued job.
|
|
@@ -148,6 +183,22 @@ const result = await queue.cancel('job-123')
|
|
|
148
183
|
|
|
149
184
|
Get the cached result of a completed job.
|
|
150
185
|
|
|
186
|
+
##### `queue.updateResultTTL(id, ttlMs): Promise<UpdateResultTTLResult>`
|
|
187
|
+
|
|
188
|
+
Update TTL for a terminal job payload:
|
|
189
|
+
- completed jobs: updates cached result TTL
|
|
190
|
+
- failed jobs: updates cached error TTL
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
const update = await queue.updateResultTTL('job-123', 5 * 60_000)
|
|
194
|
+
|
|
195
|
+
// update.status can be:
|
|
196
|
+
// - 'updated'
|
|
197
|
+
// - 'not_found'
|
|
198
|
+
// - 'not_terminal'
|
|
199
|
+
// - 'missing_payload'
|
|
200
|
+
```
|
|
201
|
+
|
|
151
202
|
##### `queue.getStatus(id): Promise<MessageStatus | null>`
|
|
152
203
|
|
|
153
204
|
Get the current status of a job.
|
package/dist/consumer.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import type { Storage } from './storage/types.ts';
|
|
3
3
|
import type { Serde } from './serde/index.ts';
|
|
4
|
-
import type { JobHandler } from './types.ts';
|
|
4
|
+
import type { JobHandler, AfterExecutionHook } from './types.ts';
|
|
5
5
|
interface ConsumerConfig<TPayload, TResult> {
|
|
6
6
|
storage: Storage;
|
|
7
7
|
workerId: string;
|
|
@@ -12,6 +12,7 @@ interface ConsumerConfig<TPayload, TResult> {
|
|
|
12
12
|
maxRetries?: number;
|
|
13
13
|
resultTTL?: number;
|
|
14
14
|
visibilityTimeout?: number;
|
|
15
|
+
afterExecution?: AfterExecutionHook<TPayload, TResult>;
|
|
15
16
|
}
|
|
16
17
|
interface ConsumerEvents<TResult> {
|
|
17
18
|
error: [error: Error];
|
package/dist/consumer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAqB,UAAU,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAqB,UAAU,EAAE,kBAAkB,EAAyB,MAAM,YAAY,CAAA;AAI1G,UAAU,cAAc,CAAC,QAAQ,EAAE,OAAO;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;CACvD;AAED,UAAU,cAAc,CAAC,OAAO;IAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACrB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAClC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IACpD,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;CACvB;AAQD;;GAEG;AACH,qBAAa,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAE,SAAQ,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;;gBAkBvE,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;IActD;;OAEG;IACH,OAAO,CAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,IAAI;IAItD;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAwB7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;CA4O7B"}
|
package/dist/consumer.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import { MaxRetriesError } from "./errors.js";
|
|
3
3
|
import { createJsonSerde } from "./serde/index.js";
|
|
4
|
+
const noopAfterExecution = async (_context) => { };
|
|
4
5
|
/**
|
|
5
6
|
* Consumer handles processing jobs from the queue
|
|
6
7
|
*/
|
|
@@ -14,6 +15,7 @@ export class Consumer extends EventEmitter {
|
|
|
14
15
|
#maxRetries;
|
|
15
16
|
#resultTTL;
|
|
16
17
|
#visibilityTimeout;
|
|
18
|
+
#afterExecution;
|
|
17
19
|
#handler = null;
|
|
18
20
|
#running = false;
|
|
19
21
|
#activeJobs = 0;
|
|
@@ -30,6 +32,7 @@ export class Consumer extends EventEmitter {
|
|
|
30
32
|
this.#maxRetries = config.maxRetries ?? 3;
|
|
31
33
|
this.#resultTTL = config.resultTTL ?? 3600000;
|
|
32
34
|
this.#visibilityTimeout = config.visibilityTimeout ?? 30000;
|
|
35
|
+
this.#afterExecution = config.afterExecution ?? noopAfterExecution;
|
|
33
36
|
}
|
|
34
37
|
/**
|
|
35
38
|
* Register a job handler
|
|
@@ -56,7 +59,7 @@ export class Consumer extends EventEmitter {
|
|
|
56
59
|
loops.push(this.#workerLoop());
|
|
57
60
|
}
|
|
58
61
|
// Don't await - let them run in background
|
|
59
|
-
Promise.all(loops).catch(
|
|
62
|
+
Promise.all(loops).catch(err => {
|
|
60
63
|
this.emit('error', err);
|
|
61
64
|
});
|
|
62
65
|
}
|
|
@@ -74,7 +77,7 @@ export class Consumer extends EventEmitter {
|
|
|
74
77
|
// Wait for active jobs to complete (with timeout)
|
|
75
78
|
const maxWait = this.#visibilityTimeout;
|
|
76
79
|
const startTime = Date.now();
|
|
77
|
-
while (this.#activeJobs > 0 &&
|
|
80
|
+
while (this.#activeJobs > 0 && Date.now() - startTime < maxWait) {
|
|
78
81
|
await new Promise(resolve => setTimeout(resolve, 100));
|
|
79
82
|
}
|
|
80
83
|
// Abort any remaining jobs
|
|
@@ -121,7 +124,8 @@ export class Consumer extends EventEmitter {
|
|
|
121
124
|
*/
|
|
122
125
|
async #processJob(message) {
|
|
123
126
|
const queueMessage = this.#deserializeMessage(message);
|
|
124
|
-
const { id, payload, attempts, maxAttempts } = queueMessage;
|
|
127
|
+
const { id, payload, attempts, maxAttempts, createdAt } = queueMessage;
|
|
128
|
+
const resolvedTTL = queueMessage.resultTTL ?? this.#resultTTL;
|
|
125
129
|
// Check if job was cancelled (deleted from jobs hash)
|
|
126
130
|
const state = await this.#storage.getJobState(id);
|
|
127
131
|
if (!state) {
|
|
@@ -137,30 +141,46 @@ export class Consumer extends EventEmitter {
|
|
|
137
141
|
const visibilityTimer = setTimeout(() => {
|
|
138
142
|
jobAbortController.abort();
|
|
139
143
|
}, this.#visibilityTimeout);
|
|
144
|
+
const currentAttempts = attempts + 1;
|
|
140
145
|
// Update state to processing
|
|
141
|
-
const
|
|
142
|
-
await this.#storage.setJobState(id, `processing:${
|
|
146
|
+
const startedAt = Date.now();
|
|
147
|
+
await this.#storage.setJobState(id, `processing:${startedAt}:${this.#workerId}`);
|
|
143
148
|
await this.#storage.publishEvent(id, 'processing');
|
|
144
149
|
try {
|
|
145
150
|
const job = {
|
|
146
151
|
id,
|
|
147
152
|
payload,
|
|
148
|
-
attempts:
|
|
153
|
+
attempts: currentAttempts,
|
|
149
154
|
signal: jobAbortController.signal
|
|
150
155
|
};
|
|
151
156
|
const result = await this.#executeHandler(job);
|
|
152
157
|
// Clear visibility timer
|
|
153
158
|
clearTimeout(visibilityTimer);
|
|
159
|
+
const finishedAt = Date.now();
|
|
160
|
+
const context = await this.#runAfterExecution({
|
|
161
|
+
id,
|
|
162
|
+
payload,
|
|
163
|
+
attempts: currentAttempts,
|
|
164
|
+
maxAttempts,
|
|
165
|
+
createdAt,
|
|
166
|
+
status: 'completed',
|
|
167
|
+
result,
|
|
168
|
+
ttl: resolvedTTL,
|
|
169
|
+
workerId: this.#workerId,
|
|
170
|
+
startedAt,
|
|
171
|
+
finishedAt,
|
|
172
|
+
durationMs: finishedAt - startedAt
|
|
173
|
+
});
|
|
174
|
+
const finalResult = context.result;
|
|
154
175
|
// Complete the job
|
|
155
|
-
const serializedResult = this.#resultSerde.serialize(
|
|
156
|
-
await this.#storage.completeJob(id, message, this.#workerId, serializedResult,
|
|
157
|
-
this.emit('completed', id,
|
|
176
|
+
const serializedResult = this.#resultSerde.serialize(finalResult);
|
|
177
|
+
await this.#storage.completeJob(id, message, this.#workerId, serializedResult, context.ttl);
|
|
178
|
+
this.emit('completed', id, finalResult);
|
|
158
179
|
}
|
|
159
180
|
catch (err) {
|
|
160
181
|
// Clear visibility timer
|
|
161
182
|
clearTimeout(visibilityTimer);
|
|
162
183
|
const error = err;
|
|
163
|
-
const currentAttempts = attempts + 1;
|
|
164
184
|
if (currentAttempts < maxAttempts) {
|
|
165
185
|
// Retry - update message with incremented attempts
|
|
166
186
|
const updatedMessage = {
|
|
@@ -173,13 +193,31 @@ export class Consumer extends EventEmitter {
|
|
|
173
193
|
}
|
|
174
194
|
else {
|
|
175
195
|
// Max retries exceeded - fail the job
|
|
176
|
-
const
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
196
|
+
const finishedAt = Date.now();
|
|
197
|
+
const context = await this.#runAfterExecution({
|
|
198
|
+
id,
|
|
199
|
+
payload,
|
|
200
|
+
attempts: currentAttempts,
|
|
201
|
+
maxAttempts,
|
|
202
|
+
createdAt,
|
|
203
|
+
status: 'failed',
|
|
204
|
+
error,
|
|
205
|
+
ttl: resolvedTTL,
|
|
206
|
+
workerId: this.#workerId,
|
|
207
|
+
startedAt,
|
|
208
|
+
finishedAt,
|
|
209
|
+
durationMs: finishedAt - startedAt
|
|
210
|
+
});
|
|
211
|
+
const finalError = context.error ?? error;
|
|
212
|
+
const maxRetriesError = new MaxRetriesError(id, currentAttempts, finalError);
|
|
213
|
+
const serializedError = Buffer.from(JSON.stringify(typeof finalError.toJSON === 'function'
|
|
214
|
+
? finalError.toJSON()
|
|
215
|
+
: {
|
|
216
|
+
message: finalError.message,
|
|
217
|
+
code: finalError.code,
|
|
218
|
+
stack: finalError.stack
|
|
219
|
+
}));
|
|
220
|
+
await this.#storage.failJob(id, message, this.#workerId, serializedError, context.ttl);
|
|
183
221
|
this.emit('failed', id, maxRetriesError);
|
|
184
222
|
}
|
|
185
223
|
}
|
|
@@ -188,6 +226,21 @@ export class Consumer extends EventEmitter {
|
|
|
188
226
|
this.#activeJobs--;
|
|
189
227
|
}
|
|
190
228
|
}
|
|
229
|
+
async #runAfterExecution(context) {
|
|
230
|
+
const originalTTL = context.ttl;
|
|
231
|
+
try {
|
|
232
|
+
await this.#afterExecution(context);
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
this.emit('error', err);
|
|
236
|
+
context.ttl = originalTTL;
|
|
237
|
+
}
|
|
238
|
+
if (!Number.isFinite(context.ttl) || !Number.isInteger(context.ttl) || context.ttl <= 0) {
|
|
239
|
+
this.emit('error', new TypeError('resultTTL must be a positive integer in milliseconds'));
|
|
240
|
+
context.ttl = originalTTL;
|
|
241
|
+
}
|
|
242
|
+
return context;
|
|
243
|
+
}
|
|
191
244
|
/**
|
|
192
245
|
* Execute the job handler (supports both async and callback styles)
|
|
193
246
|
*/
|
|
@@ -196,6 +249,7 @@ export class Consumer extends EventEmitter {
|
|
|
196
249
|
// Check if callback style (handler.length > 1)
|
|
197
250
|
if (handler.length > 1) {
|
|
198
251
|
return new Promise((resolve, reject) => {
|
|
252
|
+
;
|
|
199
253
|
handler(job, (err, result) => {
|
|
200
254
|
if (err)
|
|
201
255
|
reject(err);
|
package/dist/consumer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { QueueMessage, MessageState, MessageStatus, EnqueueOptions, EnqueueAndWaitOptions, EnqueueResult, CancelResult, Job, JobHandler, QueueConfig, QueueEvents } from './types.ts';
|
|
1
|
+
export type { QueueMessage, MessageState, MessageStatus, UpdateResultTTLResult, EnqueueOptions, EnqueueAndWaitOptions, EnqueueResult, CancelResult, Job, AfterExecutionContext, AfterExecutionHook, JobHandler, QueueConfig, QueueEvents } from './types.ts';
|
|
2
2
|
export { JobQueueError, TimeoutError, MaxRetriesError, JobNotFoundError, StorageError, JobCancelledError, JobFailedError } from './errors.ts';
|
|
3
3
|
export type { Serde } from './serde/index.ts';
|
|
4
4
|
export { JsonSerde, createJsonSerde } from './serde/index.ts';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,GAAG,EACH,UAAU,EACV,WAAW,EACX,WAAW,EACZ,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACf,MAAM,aAAa,CAAA;AAGpB,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG7D,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,GAAG,EACH,qBAAqB,EACrB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,EACZ,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACf,MAAM,aAAa,CAAA;AAGpB,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG7D,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGlC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkBA,SAAS;AACT,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACf,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAI7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,QAAQ;AACR,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,SAAS;AACT,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,QAAQ;AACR,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA"}
|
package/dist/producer.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { Storage } from './storage/types.ts';
|
|
2
1
|
import type { Serde } from './serde/index.ts';
|
|
3
|
-
import type {
|
|
2
|
+
import type { Storage } from './storage/types.ts';
|
|
3
|
+
import type { CancelResult, EnqueueAndWaitOptions, EnqueueOptions, EnqueueResult, MessageStatus, UpdateResultTTLResult } from './types.ts';
|
|
4
4
|
interface ProducerConfig<TPayload, TResult> {
|
|
5
5
|
storage: Storage;
|
|
6
6
|
payloadSerde?: Serde<TPayload>;
|
|
@@ -30,6 +30,10 @@ export declare class Producer<TPayload, TResult> {
|
|
|
30
30
|
* Get the result of a completed job
|
|
31
31
|
*/
|
|
32
32
|
getResult(id: string): Promise<TResult | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Update TTL for a terminal job payload (result for completed jobs, error for failed jobs).
|
|
35
|
+
*/
|
|
36
|
+
updateResultTTL(id: string, ttlMs: number): Promise<UpdateResultTTLResult>;
|
|
33
37
|
/**
|
|
34
38
|
* Get the status of a job
|
|
35
39
|
*/
|
package/dist/producer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"producer.d.ts","sourceRoot":"","sources":["../src/producer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"producer.d.ts","sourceRoot":"","sources":["../src/producer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EACV,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,aAAa,EAGb,qBAAqB,EACtB,MAAM,YAAY,CAAA;AAGnB,UAAU,cAAc,CAAC,QAAQ,EAAE,OAAO;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,QAAQ,CAAC,QAAQ,EAAE,OAAO;;gBAOxB,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;IAQtD;;OAEG;IACG,OAAO,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAmCxG;;OAEG;IACG,cAAc,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoDvG;;OAEG;IACG,MAAM,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA0BhD;;OAEG;IACG,SAAS,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAQrD;;OAEG;IACG,eAAe,CAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA+BjF;;OAEG;IACG,SAAS,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CAwCrE"}
|
package/dist/producer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { JobFailedError, TimeoutError } from "./errors.js";
|
|
2
2
|
import { createJsonSerde } from "./serde/index.js";
|
|
3
3
|
import { parseState } from "./utils/state.js";
|
|
4
4
|
/**
|
|
@@ -23,12 +23,15 @@ export class Producer {
|
|
|
23
23
|
async enqueue(id, payload, options) {
|
|
24
24
|
const timestamp = Date.now();
|
|
25
25
|
const maxAttempts = options?.maxAttempts ?? this.#maxRetries;
|
|
26
|
+
const resultTTL = options?.resultTTL ?? this.#resultTTL;
|
|
27
|
+
this.#validateResultTTL(resultTTL);
|
|
26
28
|
const message = {
|
|
27
29
|
id,
|
|
28
30
|
payload,
|
|
29
31
|
createdAt: timestamp,
|
|
30
32
|
attempts: 0,
|
|
31
|
-
maxAttempts
|
|
33
|
+
maxAttempts,
|
|
34
|
+
resultTTL
|
|
32
35
|
};
|
|
33
36
|
const serialized = this.#payloadSerde.serialize(message);
|
|
34
37
|
const existingState = await this.#storage.enqueue(id, serialized, timestamp);
|
|
@@ -124,6 +127,34 @@ export class Producer {
|
|
|
124
127
|
}
|
|
125
128
|
return this.#resultSerde.deserialize(resultBuffer);
|
|
126
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Update TTL for a terminal job payload (result for completed jobs, error for failed jobs).
|
|
132
|
+
*/
|
|
133
|
+
async updateResultTTL(id, ttlMs) {
|
|
134
|
+
this.#validateResultTTL(ttlMs);
|
|
135
|
+
const state = await this.#storage.getJobState(id);
|
|
136
|
+
if (!state) {
|
|
137
|
+
return { status: 'not_found' };
|
|
138
|
+
}
|
|
139
|
+
const { status } = parseState(state);
|
|
140
|
+
if (status !== 'completed' && status !== 'failed') {
|
|
141
|
+
return { status: 'not_terminal' };
|
|
142
|
+
}
|
|
143
|
+
if (status === 'completed') {
|
|
144
|
+
const existingResult = await this.#storage.getResult(id);
|
|
145
|
+
if (!existingResult) {
|
|
146
|
+
return { status: 'missing_payload' };
|
|
147
|
+
}
|
|
148
|
+
await this.#storage.setResult(id, existingResult, ttlMs);
|
|
149
|
+
return { status: 'updated' };
|
|
150
|
+
}
|
|
151
|
+
const existingError = await this.#storage.getError(id);
|
|
152
|
+
if (!existingError) {
|
|
153
|
+
return { status: 'missing_payload' };
|
|
154
|
+
}
|
|
155
|
+
await this.#storage.setError(id, existingError, ttlMs);
|
|
156
|
+
return { status: 'updated' };
|
|
157
|
+
}
|
|
127
158
|
/**
|
|
128
159
|
* Get the status of a job
|
|
129
160
|
*/
|
|
@@ -159,5 +190,10 @@ export class Producer {
|
|
|
159
190
|
}
|
|
160
191
|
return messageStatus;
|
|
161
192
|
}
|
|
193
|
+
#validateResultTTL(resultTTL) {
|
|
194
|
+
if (!Number.isFinite(resultTTL) || !Number.isInteger(resultTTL) || resultTTL <= 0) {
|
|
195
|
+
throw new TypeError('resultTTL must be a positive integer in milliseconds');
|
|
196
|
+
}
|
|
197
|
+
}
|
|
162
198
|
}
|
|
163
199
|
//# sourceMappingURL=producer.js.map
|
package/dist/producer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"producer.js","sourceRoot":"","sources":["../src/producer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"producer.js","sourceRoot":"","sources":["../src/producer.ts"],"names":[],"mappings":"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"}
|
package/dist/queue.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
|
-
import type { QueueConfig, EnqueueOptions, EnqueueAndWaitOptions, EnqueueResult, CancelResult, MessageStatus, JobHandler, QueueEvents } from './types.ts';
|
|
2
|
+
import type { QueueConfig, EnqueueOptions, EnqueueAndWaitOptions, EnqueueResult, CancelResult, MessageStatus, UpdateResultTTLResult, JobHandler, QueueEvents } from './types.ts';
|
|
3
3
|
/**
|
|
4
4
|
* Queue class combining Producer and Consumer functionality
|
|
5
5
|
*/
|
|
@@ -34,6 +34,10 @@ export declare class Queue<TPayload, TResult = void> extends EventEmitter<QueueE
|
|
|
34
34
|
* Get the result of a completed job
|
|
35
35
|
*/
|
|
36
36
|
getResult(id: string): Promise<TResult | null>;
|
|
37
|
+
/**
|
|
38
|
+
* Update TTL for a terminal job payload (result or error).
|
|
39
|
+
*/
|
|
40
|
+
updateResultTTL(id: string, ttlMs: number): Promise<UpdateResultTTLResult>;
|
|
37
41
|
/**
|
|
38
42
|
* Get the status of a job
|
|
39
43
|
*/
|
package/dist/queue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,WAAW,
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,UAAU,EACV,WAAW,EAEZ,MAAM,YAAY,CAAA;AAKnB;;GAEG;AACH,qBAAa,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAE,SAAQ,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;;gBAiBxE,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC;IAuBnD;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAc7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;IACH,OAAO,CAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,IAAI;IAStD;;OAEG;IACG,OAAO,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAQxG;;OAEG;IACG,cAAc,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvG;;OAEG;IACG,MAAM,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAQhD;;OAEG;IACG,SAAS,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIrD;;OAEG;IACG,eAAe,CAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIjF;;OAEG;IACG,SAAS,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CA8CrE"}
|
package/dist/queue.js
CHANGED
|
@@ -20,6 +20,7 @@ export class Queue extends EventEmitter {
|
|
|
20
20
|
#maxRetries;
|
|
21
21
|
#resultTTL;
|
|
22
22
|
#visibilityTimeout;
|
|
23
|
+
#afterExecution;
|
|
23
24
|
constructor(config) {
|
|
24
25
|
super();
|
|
25
26
|
this.#storage = config.storage;
|
|
@@ -31,6 +32,7 @@ export class Queue extends EventEmitter {
|
|
|
31
32
|
this.#maxRetries = config.maxRetries ?? 3;
|
|
32
33
|
this.#resultTTL = config.resultTTL ?? 3600000;
|
|
33
34
|
this.#visibilityTimeout = config.visibilityTimeout ?? 30000;
|
|
35
|
+
this.#afterExecution = config.afterExecution;
|
|
34
36
|
this.#producer = new Producer({
|
|
35
37
|
storage: this.#storage,
|
|
36
38
|
payloadSerde: this.#payloadSerde,
|
|
@@ -108,6 +110,12 @@ export class Queue extends EventEmitter {
|
|
|
108
110
|
async getResult(id) {
|
|
109
111
|
return this.#producer.getResult(id);
|
|
110
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Update TTL for a terminal job payload (result or error).
|
|
115
|
+
*/
|
|
116
|
+
async updateResultTTL(id, ttlMs) {
|
|
117
|
+
return this.#producer.updateResultTTL(id, ttlMs);
|
|
118
|
+
}
|
|
111
119
|
/**
|
|
112
120
|
* Get the status of a job
|
|
113
121
|
*/
|
|
@@ -126,10 +134,11 @@ export class Queue extends EventEmitter {
|
|
|
126
134
|
blockTimeout: this.#blockTimeout,
|
|
127
135
|
maxRetries: this.#maxRetries,
|
|
128
136
|
resultTTL: this.#resultTTL,
|
|
129
|
-
visibilityTimeout: this.#visibilityTimeout
|
|
137
|
+
visibilityTimeout: this.#visibilityTimeout,
|
|
138
|
+
afterExecution: this.#afterExecution
|
|
130
139
|
});
|
|
131
140
|
// Forward consumer events
|
|
132
|
-
this.#consumer.on('error',
|
|
141
|
+
this.#consumer.on('error', error => {
|
|
133
142
|
this.emit('error', error);
|
|
134
143
|
});
|
|
135
144
|
this.#consumer.on('completed', (id, result) => {
|
|
@@ -141,11 +150,11 @@ export class Queue extends EventEmitter {
|
|
|
141
150
|
this.#consumer.on('failing', (id, error, attempt) => {
|
|
142
151
|
this.emit('failing', id, error, attempt);
|
|
143
152
|
});
|
|
144
|
-
this.#consumer.on('requeued',
|
|
153
|
+
this.#consumer.on('requeued', id => {
|
|
145
154
|
this.emit('requeued', id);
|
|
146
155
|
});
|
|
147
156
|
this.#consumer.execute(this.#handler);
|
|
148
|
-
this.#consumer.start().catch(
|
|
157
|
+
this.#consumer.start().catch(err => {
|
|
149
158
|
this.emit('error', err);
|
|
150
159
|
});
|
|
151
160
|
}
|
package/dist/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
|
package/dist/reaper.js
CHANGED
|
@@ -232,7 +232,7 @@ export class Reaper extends EventEmitter {
|
|
|
232
232
|
this.#cancelTimer(id);
|
|
233
233
|
const timer = setTimeout(() => {
|
|
234
234
|
this.#processingTimers.delete(id);
|
|
235
|
-
this.#checkJob(id).catch(
|
|
235
|
+
this.#checkJob(id).catch(err => {
|
|
236
236
|
this.emit('error', err);
|
|
237
237
|
});
|
|
238
238
|
}, this.#visibilityTimeout);
|
|
@@ -271,7 +271,7 @@ export class Reaper extends EventEmitter {
|
|
|
271
271
|
const remaining = this.#visibilityTimeout - elapsed;
|
|
272
272
|
const timer = setTimeout(() => {
|
|
273
273
|
this.#processingTimers.delete(id);
|
|
274
|
-
this.#checkJob(id).catch(
|
|
274
|
+
this.#checkJob(id).catch(err => {
|
|
275
275
|
this.emit('error', err);
|
|
276
276
|
});
|
|
277
277
|
}, remaining);
|
|
@@ -359,7 +359,7 @@ export class Reaper extends EventEmitter {
|
|
|
359
359
|
const remaining = this.#visibilityTimeout - elapsed;
|
|
360
360
|
const timer = setTimeout(() => {
|
|
361
361
|
this.#processingTimers.delete(queueMessage.id);
|
|
362
|
-
this.#checkJob(queueMessage.id).catch(
|
|
362
|
+
this.#checkJob(queueMessage.id).catch(err => {
|
|
363
363
|
this.emit('error', err);
|
|
364
364
|
});
|
|
365
365
|
}, remaining);
|