@platformatic/job-queue 0.1.0 → 0.3.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 +57 -4
- package/dist/consumer.d.ts +5 -2
- package/dist/consumer.d.ts.map +1 -1
- package/dist/consumer.js +127 -31
- 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 +8 -2
- package/dist/producer.d.ts.map +1 -1
- package/dist/producer.js +64 -3
- 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 +59 -12
- package/dist/queue.js.map +1 -1
- package/dist/reaper.d.ts +3 -1
- package/dist/reaper.d.ts.map +1 -1
- package/dist/reaper.js +21 -10
- 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 +172 -49
- 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 +4 -2
- package/dist/storage/redis.d.ts.map +1 -1
- package/dist/storage/redis.js +67 -21
- 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 +41 -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/dist/utils/logging.d.ts +5 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +24 -0
- package/dist/utils/logging.js.map +1 -0
- package/package.json +7 -2
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,8 @@ 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
|
+
| `logger` | `pino.Logger` | `abstractLogger` | Logger used by queue/producer/consumer |
|
|
87
|
+
| `afterExecution` | `AfterExecutionHook<TPayload, TResult>` | `undefined` | Hook called after execution and before persisting terminal state |
|
|
80
88
|
| `payloadSerde` | `Serde<TPayload>` | `JsonSerde` | Custom serializer for job payloads |
|
|
81
89
|
| `resultSerde` | `Serde<TResult>` | `JsonSerde` | Custom serializer for job results |
|
|
82
90
|
|
|
@@ -109,7 +117,10 @@ queue.execute(async (job) => {
|
|
|
109
117
|
Enqueue a job (fire-and-forget).
|
|
110
118
|
|
|
111
119
|
```typescript
|
|
112
|
-
const result = await queue.enqueue('job-123', { data: 'value' }
|
|
120
|
+
const result = await queue.enqueue('job-123', { data: 'value' }, {
|
|
121
|
+
maxAttempts: 5,
|
|
122
|
+
resultTTL: 60_000 // optional per-job TTL override (ms)
|
|
123
|
+
})
|
|
113
124
|
|
|
114
125
|
// result.status can be:
|
|
115
126
|
// - 'queued': Job was added to the queue
|
|
@@ -124,12 +135,37 @@ Enqueue a job and wait for the result.
|
|
|
124
135
|
```typescript
|
|
125
136
|
const result = await queue.enqueueAndWait('job-123', payload, {
|
|
126
137
|
timeout: 30000, // Timeout in milliseconds
|
|
127
|
-
maxAttempts: 5
|
|
138
|
+
maxAttempts: 5, // Override default max retries
|
|
139
|
+
resultTTL: 300000 // Optional per-job TTL override (ms)
|
|
128
140
|
})
|
|
129
141
|
```
|
|
130
142
|
|
|
131
143
|
Throws `TimeoutError` if the job doesn't complete within the timeout.
|
|
132
144
|
|
|
145
|
+
`resultTTL` behavior:
|
|
146
|
+
- If provided in `enqueue()` / `enqueueAndWait()`, it overrides the queue default for that job.
|
|
147
|
+
- If omitted, the producer uses the queue default `resultTTL` at enqueue time.
|
|
148
|
+
- For duplicate IDs, the first accepted enqueue defines the TTL for that job.
|
|
149
|
+
|
|
150
|
+
`afterExecution` hook behavior:
|
|
151
|
+
- Runs after a successful execution or after the final failed attempt, before terminal state is persisted.
|
|
152
|
+
- Receives a mutable context object (passed by reference), including `result`/`error` and `ttl`.
|
|
153
|
+
- You can update `context.ttl` to change the stored result/error TTL dynamically.
|
|
154
|
+
- You can replace `context.result` / `context.error` to affect what is persisted.
|
|
155
|
+
- `id` and `status` are informational; changing them has no effect on persistence.
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
const queue = new Queue<{ url: string }, { body: string; maxAgeMs?: number }>({
|
|
159
|
+
storage,
|
|
160
|
+
resultTTL: 60_000,
|
|
161
|
+
afterExecution: async (context) => {
|
|
162
|
+
if (context.status === 'completed' && context.result?.maxAgeMs) {
|
|
163
|
+
context.ttl = context.result.maxAgeMs
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
```
|
|
168
|
+
|
|
133
169
|
##### `queue.cancel(id): Promise<CancelResult>`
|
|
134
170
|
|
|
135
171
|
Cancel a queued job.
|
|
@@ -148,6 +184,22 @@ const result = await queue.cancel('job-123')
|
|
|
148
184
|
|
|
149
185
|
Get the cached result of a completed job.
|
|
150
186
|
|
|
187
|
+
##### `queue.updateResultTTL(id, ttlMs): Promise<UpdateResultTTLResult>`
|
|
188
|
+
|
|
189
|
+
Update TTL for a terminal job payload:
|
|
190
|
+
- completed jobs: updates cached result TTL
|
|
191
|
+
- failed jobs: updates cached error TTL
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
const update = await queue.updateResultTTL('job-123', 5 * 60_000)
|
|
195
|
+
|
|
196
|
+
// update.status can be:
|
|
197
|
+
// - 'updated'
|
|
198
|
+
// - 'not_found'
|
|
199
|
+
// - 'not_terminal'
|
|
200
|
+
// - 'missing_payload'
|
|
201
|
+
```
|
|
202
|
+
|
|
151
203
|
##### `queue.getStatus(id): Promise<MessageStatus | null>`
|
|
152
204
|
|
|
153
205
|
Get the current status of a job.
|
|
@@ -228,7 +280,8 @@ import { RedisStorage } from '@platformatic/job-queue'
|
|
|
228
280
|
|
|
229
281
|
const storage = new RedisStorage({
|
|
230
282
|
url: 'redis://localhost:6379',
|
|
231
|
-
keyPrefix: 'myapp:'
|
|
283
|
+
keyPrefix: 'myapp:', // Optional prefix for all keys
|
|
284
|
+
logger // Optional pino-compatible logger
|
|
232
285
|
})
|
|
233
286
|
```
|
|
234
287
|
|
package/dist/consumer.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Logger } from 'pino';
|
|
3
3
|
import type { Serde } from './serde/index.ts';
|
|
4
|
-
import type {
|
|
4
|
+
import type { Storage } from './storage/types.ts';
|
|
5
|
+
import type { AfterExecutionHook, JobHandler } from './types.ts';
|
|
5
6
|
interface ConsumerConfig<TPayload, TResult> {
|
|
6
7
|
storage: Storage;
|
|
7
8
|
workerId: string;
|
|
@@ -12,6 +13,8 @@ interface ConsumerConfig<TPayload, TResult> {
|
|
|
12
13
|
maxRetries?: number;
|
|
13
14
|
resultTTL?: number;
|
|
14
15
|
visibilityTimeout?: number;
|
|
16
|
+
afterExecution?: AfterExecutionHook<TPayload, TResult>;
|
|
17
|
+
logger?: Logger;
|
|
15
18
|
}
|
|
16
19
|
interface ConsumerEvents<TResult> {
|
|
17
20
|
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,
|
|
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,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAyB,kBAAkB,EAAO,UAAU,EAAgB,MAAM,YAAY,CAAA;AAG1G,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;IACtD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;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;;gBAqBvE,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;IAetD;;OAEG;IACH,OAAO,CAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,IAAI;IAKtD;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAyC7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;CAiR7B"}
|
package/dist/consumer.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import { MaxRetriesError } from "./errors.js";
|
|
3
3
|
import { createJsonSerde } from "./serde/index.js";
|
|
4
|
+
import { abstractLogger, ensureLoggableError } from "./utils/logging.js";
|
|
5
|
+
const noopAfterExecution = async (_context) => { };
|
|
4
6
|
/**
|
|
5
7
|
* Consumer handles processing jobs from the queue
|
|
6
8
|
*/
|
|
@@ -14,10 +16,14 @@ export class Consumer extends EventEmitter {
|
|
|
14
16
|
#maxRetries;
|
|
15
17
|
#resultTTL;
|
|
16
18
|
#visibilityTimeout;
|
|
19
|
+
#afterExecution;
|
|
20
|
+
#logger;
|
|
17
21
|
#handler = null;
|
|
18
22
|
#running = false;
|
|
19
23
|
#activeJobs = 0;
|
|
20
24
|
#abortController = null;
|
|
25
|
+
#workerLoops = [];
|
|
26
|
+
#loopsDone = null;
|
|
21
27
|
#jobAbortControllers = new Map();
|
|
22
28
|
constructor(config) {
|
|
23
29
|
super();
|
|
@@ -30,76 +36,102 @@ export class Consumer extends EventEmitter {
|
|
|
30
36
|
this.#maxRetries = config.maxRetries ?? 3;
|
|
31
37
|
this.#resultTTL = config.resultTTL ?? 3600000;
|
|
32
38
|
this.#visibilityTimeout = config.visibilityTimeout ?? 30000;
|
|
39
|
+
this.#afterExecution = config.afterExecution ?? noopAfterExecution;
|
|
40
|
+
this.#logger = (config.logger ?? abstractLogger).child({ component: 'consumer', workerId: this.#workerId });
|
|
33
41
|
}
|
|
34
42
|
/**
|
|
35
43
|
* Register a job handler
|
|
36
44
|
*/
|
|
37
45
|
execute(handler) {
|
|
38
46
|
this.#handler = handler;
|
|
47
|
+
this.#logger.debug('Registered consumer handler.');
|
|
39
48
|
}
|
|
40
49
|
/**
|
|
41
50
|
* Start consuming jobs
|
|
42
51
|
*/
|
|
43
52
|
async start() {
|
|
44
|
-
if (this.#running)
|
|
53
|
+
if (this.#running) {
|
|
54
|
+
this.#logger.trace('Consumer already running.');
|
|
45
55
|
return;
|
|
56
|
+
}
|
|
46
57
|
if (!this.#handler) {
|
|
47
58
|
throw new Error('No handler registered. Call execute() first.');
|
|
48
59
|
}
|
|
60
|
+
// Ensure any previous worker loops have exited before starting a new run.
|
|
61
|
+
if (this.#loopsDone) {
|
|
62
|
+
await this.#loopsDone;
|
|
63
|
+
this.#workerLoops = [];
|
|
64
|
+
this.#loopsDone = null;
|
|
65
|
+
}
|
|
49
66
|
this.#running = true;
|
|
50
67
|
this.#abortController = new AbortController();
|
|
68
|
+
this.#logger.debug({ concurrency: this.#concurrency }, 'Starting consumer.');
|
|
51
69
|
// Register worker
|
|
52
70
|
await this.#storage.registerWorker(this.#workerId, this.#visibilityTimeout * 2);
|
|
53
71
|
// Start worker loops based on concurrency
|
|
54
|
-
const
|
|
72
|
+
const abortSignal = this.#abortController.signal;
|
|
73
|
+
this.#workerLoops = [];
|
|
55
74
|
for (let i = 0; i < this.#concurrency; i++) {
|
|
56
|
-
|
|
75
|
+
const loopPromise = this.#workerLoop(abortSignal).catch(err => {
|
|
76
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
77
|
+
this.#logger.error({ err: ensureLoggableError(error) }, 'Worker loop terminated with error.');
|
|
78
|
+
this.emit('error', error);
|
|
79
|
+
});
|
|
80
|
+
this.#workerLoops.push(loopPromise);
|
|
57
81
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
this.emit('error', err);
|
|
61
|
-
});
|
|
82
|
+
this.#loopsDone = Promise.allSettled(this.#workerLoops).then(() => { });
|
|
83
|
+
this.#logger.debug('Consumer started.');
|
|
62
84
|
}
|
|
63
85
|
/**
|
|
64
86
|
* Stop consuming jobs gracefully
|
|
65
87
|
*/
|
|
66
88
|
async stop() {
|
|
67
|
-
if (!this.#running)
|
|
89
|
+
if (!this.#running) {
|
|
90
|
+
this.#logger.trace('Consumer already stopped.');
|
|
68
91
|
return;
|
|
92
|
+
}
|
|
93
|
+
this.#logger.debug('Stopping consumer.');
|
|
69
94
|
this.#running = false;
|
|
70
95
|
// Signal abort to worker loops
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
96
|
+
const abortController = this.#abortController;
|
|
97
|
+
this.#abortController = null;
|
|
98
|
+
abortController?.abort();
|
|
74
99
|
// Wait for active jobs to complete (with timeout)
|
|
75
100
|
const maxWait = this.#visibilityTimeout;
|
|
76
101
|
const startTime = Date.now();
|
|
77
|
-
while (this.#activeJobs > 0 &&
|
|
102
|
+
while (this.#activeJobs > 0 && Date.now() - startTime < maxWait) {
|
|
78
103
|
await new Promise(resolve => setTimeout(resolve, 100));
|
|
79
104
|
}
|
|
105
|
+
if (this.#activeJobs > 0) {
|
|
106
|
+
this.#logger.warn({ activeJobs: this.#activeJobs }, 'Forcing abort of active jobs during stop.');
|
|
107
|
+
}
|
|
80
108
|
// Abort any remaining jobs
|
|
81
109
|
for (const [, controller] of this.#jobAbortControllers) {
|
|
82
110
|
controller.abort();
|
|
83
111
|
}
|
|
84
112
|
this.#jobAbortControllers.clear();
|
|
113
|
+
// Worker loops are awaited on the next start() call.
|
|
85
114
|
// Unregister worker
|
|
86
115
|
await this.#storage.unregisterWorker(this.#workerId);
|
|
116
|
+
this.#logger.debug('Consumer stopped.');
|
|
87
117
|
}
|
|
88
118
|
/**
|
|
89
119
|
* Worker loop that continuously dequeues and processes jobs
|
|
90
120
|
*/
|
|
91
|
-
async #workerLoop() {
|
|
92
|
-
while (this.#running) {
|
|
121
|
+
async #workerLoop(abortSignal) {
|
|
122
|
+
while (this.#running && !abortSignal.aborted) {
|
|
93
123
|
try {
|
|
94
124
|
const message = await this.#storage.dequeue(this.#workerId, this.#blockTimeout);
|
|
95
125
|
if (!message) {
|
|
96
126
|
// Timeout, check if still running
|
|
97
127
|
continue;
|
|
98
128
|
}
|
|
129
|
+
this.#logger.trace('Dequeued job message.');
|
|
99
130
|
// Check if aborted
|
|
100
|
-
if (
|
|
131
|
+
if (abortSignal.aborted) {
|
|
101
132
|
// Put message back
|
|
102
133
|
const queueMessage = this.#deserializeMessage(message);
|
|
134
|
+
this.#logger.warn({ id: queueMessage.id }, 'Consumer aborted while holding job, requeueing.');
|
|
103
135
|
await this.#storage.requeue(queueMessage.id, message, this.#workerId);
|
|
104
136
|
this.emit('requeued', queueMessage.id);
|
|
105
137
|
break;
|
|
@@ -110,7 +142,9 @@ export class Consumer extends EventEmitter {
|
|
|
110
142
|
catch (err) {
|
|
111
143
|
if (!this.#running)
|
|
112
144
|
break;
|
|
113
|
-
|
|
145
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
146
|
+
this.#logger.error({ err: ensureLoggableError(error) }, 'Worker loop error.');
|
|
147
|
+
this.emit('error', error);
|
|
114
148
|
// Brief pause before retrying loop
|
|
115
149
|
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
116
150
|
}
|
|
@@ -121,11 +155,14 @@ export class Consumer extends EventEmitter {
|
|
|
121
155
|
*/
|
|
122
156
|
async #processJob(message) {
|
|
123
157
|
const queueMessage = this.#deserializeMessage(message);
|
|
124
|
-
const { id, payload, attempts, maxAttempts } = queueMessage;
|
|
158
|
+
const { id, payload, attempts, maxAttempts, createdAt } = queueMessage;
|
|
159
|
+
const resolvedTTL = queueMessage.resultTTL ?? this.#resultTTL;
|
|
160
|
+
this.#logger.trace({ id, attempts, maxAttempts, resolvedTTL }, 'Processing job.');
|
|
125
161
|
// Check if job was cancelled (deleted from jobs hash)
|
|
126
162
|
const state = await this.#storage.getJobState(id);
|
|
127
163
|
if (!state) {
|
|
128
164
|
// Job was cancelled, just ack it
|
|
165
|
+
this.#logger.debug({ id }, 'Acknowledging cancelled job.');
|
|
129
166
|
await this.#storage.ack(id, message, this.#workerId);
|
|
130
167
|
return;
|
|
131
168
|
}
|
|
@@ -137,30 +174,49 @@ export class Consumer extends EventEmitter {
|
|
|
137
174
|
const visibilityTimer = setTimeout(() => {
|
|
138
175
|
jobAbortController.abort();
|
|
139
176
|
}, this.#visibilityTimeout);
|
|
177
|
+
const currentAttempts = attempts + 1;
|
|
140
178
|
// Update state to processing
|
|
141
|
-
const
|
|
142
|
-
await this.#storage.setJobState(id, `processing:${
|
|
179
|
+
const startedAt = Date.now();
|
|
180
|
+
await this.#storage.setJobState(id, `processing:${startedAt}:${this.#workerId}`);
|
|
143
181
|
await this.#storage.publishEvent(id, 'processing');
|
|
182
|
+
this.#logger.trace({ id, attempt: currentAttempts }, 'Job marked as processing.');
|
|
144
183
|
try {
|
|
145
184
|
const job = {
|
|
146
185
|
id,
|
|
147
186
|
payload,
|
|
148
|
-
attempts:
|
|
187
|
+
attempts: currentAttempts,
|
|
149
188
|
signal: jobAbortController.signal
|
|
150
189
|
};
|
|
151
190
|
const result = await this.#executeHandler(job);
|
|
152
191
|
// Clear visibility timer
|
|
153
192
|
clearTimeout(visibilityTimer);
|
|
193
|
+
const finishedAt = Date.now();
|
|
194
|
+
const context = await this.#runAfterExecution({
|
|
195
|
+
id,
|
|
196
|
+
payload,
|
|
197
|
+
attempts: currentAttempts,
|
|
198
|
+
maxAttempts,
|
|
199
|
+
createdAt,
|
|
200
|
+
status: 'completed',
|
|
201
|
+
result,
|
|
202
|
+
ttl: resolvedTTL,
|
|
203
|
+
workerId: this.#workerId,
|
|
204
|
+
startedAt,
|
|
205
|
+
finishedAt,
|
|
206
|
+
durationMs: finishedAt - startedAt
|
|
207
|
+
});
|
|
208
|
+
const finalResult = context.result;
|
|
154
209
|
// Complete the job
|
|
155
|
-
const serializedResult = this.#resultSerde.serialize(
|
|
156
|
-
await this.#storage.completeJob(id, message, this.#workerId, serializedResult,
|
|
157
|
-
this.
|
|
210
|
+
const serializedResult = this.#resultSerde.serialize(finalResult);
|
|
211
|
+
await this.#storage.completeJob(id, message, this.#workerId, serializedResult, context.ttl);
|
|
212
|
+
this.#logger.debug({ id, ttl: context.ttl }, 'Job completed and persisted.');
|
|
213
|
+
this.emit('completed', id, finalResult);
|
|
158
214
|
}
|
|
159
215
|
catch (err) {
|
|
160
216
|
// Clear visibility timer
|
|
161
217
|
clearTimeout(visibilityTimer);
|
|
162
218
|
const error = err;
|
|
163
|
-
|
|
219
|
+
this.#logger.warn({ id, attempt: currentAttempts, err: ensureLoggableError(error) }, 'Job handler failed.');
|
|
164
220
|
if (currentAttempts < maxAttempts) {
|
|
165
221
|
// Retry - update message with incremented attempts
|
|
166
222
|
const updatedMessage = {
|
|
@@ -169,24 +225,63 @@ export class Consumer extends EventEmitter {
|
|
|
169
225
|
};
|
|
170
226
|
const serializedMessage = this.#payloadSerde.serialize(updatedMessage);
|
|
171
227
|
await this.#storage.retryJob(id, serializedMessage, this.#workerId, currentAttempts);
|
|
228
|
+
this.#logger.warn({ id, attempt: currentAttempts }, 'Job scheduled for retry.');
|
|
172
229
|
this.emit('failing', id, error, currentAttempts);
|
|
173
230
|
}
|
|
174
231
|
else {
|
|
175
232
|
// Max retries exceeded - fail the job
|
|
176
|
-
const
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
233
|
+
const finishedAt = Date.now();
|
|
234
|
+
const context = await this.#runAfterExecution({
|
|
235
|
+
id,
|
|
236
|
+
payload,
|
|
237
|
+
attempts: currentAttempts,
|
|
238
|
+
maxAttempts,
|
|
239
|
+
createdAt,
|
|
240
|
+
status: 'failed',
|
|
241
|
+
error,
|
|
242
|
+
ttl: resolvedTTL,
|
|
243
|
+
workerId: this.#workerId,
|
|
244
|
+
startedAt,
|
|
245
|
+
finishedAt,
|
|
246
|
+
durationMs: finishedAt - startedAt
|
|
247
|
+
});
|
|
248
|
+
const finalError = context.error ?? error;
|
|
249
|
+
const maxRetriesError = new MaxRetriesError(id, currentAttempts, finalError);
|
|
250
|
+
const serializedError = Buffer.from(JSON.stringify(typeof finalError.toJSON === 'function'
|
|
251
|
+
? finalError.toJSON()
|
|
252
|
+
: {
|
|
253
|
+
message: finalError.message,
|
|
254
|
+
code: finalError.code,
|
|
255
|
+
stack: finalError.stack
|
|
256
|
+
}));
|
|
257
|
+
await this.#storage.failJob(id, message, this.#workerId, serializedError, context.ttl);
|
|
258
|
+
this.#logger.error({ id, attempts: currentAttempts, ttl: context.ttl, err: ensureLoggableError(maxRetriesError) }, 'Job failed permanently.');
|
|
183
259
|
this.emit('failed', id, maxRetriesError);
|
|
184
260
|
}
|
|
185
261
|
}
|
|
186
262
|
finally {
|
|
187
263
|
this.#jobAbortControllers.delete(id);
|
|
188
264
|
this.#activeJobs--;
|
|
265
|
+
this.#logger.trace({ id, activeJobs: this.#activeJobs }, 'Finished job processing cycle.');
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async #runAfterExecution(context) {
|
|
269
|
+
const originalTTL = context.ttl;
|
|
270
|
+
try {
|
|
271
|
+
await this.#afterExecution(context);
|
|
272
|
+
}
|
|
273
|
+
catch (err) {
|
|
274
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
275
|
+
this.#logger.error({ id: context.id, err: ensureLoggableError(error) }, 'AfterExecution hook failed, restoring original TTL.');
|
|
276
|
+
this.emit('error', error);
|
|
277
|
+
context.ttl = originalTTL;
|
|
278
|
+
}
|
|
279
|
+
if (!Number.isFinite(context.ttl) || !Number.isInteger(context.ttl) || context.ttl <= 0) {
|
|
280
|
+
this.#logger.warn({ id: context.id, ttl: context.ttl }, 'Invalid TTL from afterExecution, restoring original TTL.');
|
|
281
|
+
this.emit('error', new TypeError('resultTTL must be a positive integer in milliseconds'));
|
|
282
|
+
context.ttl = originalTTL;
|
|
189
283
|
}
|
|
284
|
+
return context;
|
|
190
285
|
}
|
|
191
286
|
/**
|
|
192
287
|
* Execute the job handler (supports both async and callback styles)
|
|
@@ -196,6 +291,7 @@ export class Consumer extends EventEmitter {
|
|
|
196
291
|
// Check if callback style (handler.length > 1)
|
|
197
292
|
if (handler.length > 1) {
|
|
198
293
|
return new Promise((resolve, reject) => {
|
|
294
|
+
;
|
|
199
295
|
handler(job, (err, result) => {
|
|
200
296
|
if (err)
|
|
201
297
|
reject(err);
|
package/dist/consumer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumer.js","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"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"}
|
|
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,12 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Logger } from 'pino';
|
|
2
2
|
import type { Serde } from './serde/index.ts';
|
|
3
|
-
import type {
|
|
3
|
+
import type { Storage } from './storage/types.ts';
|
|
4
|
+
import type { CancelResult, EnqueueAndWaitOptions, EnqueueOptions, EnqueueResult, MessageStatus, UpdateResultTTLResult } from './types.ts';
|
|
4
5
|
interface ProducerConfig<TPayload, TResult> {
|
|
5
6
|
storage: Storage;
|
|
6
7
|
payloadSerde?: Serde<TPayload>;
|
|
7
8
|
resultSerde?: Serde<TResult>;
|
|
8
9
|
maxRetries?: number;
|
|
9
10
|
resultTTL?: number;
|
|
11
|
+
logger?: Logger;
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
14
|
* Producer handles enqueueing jobs and retrieving results
|
|
@@ -30,6 +32,10 @@ export declare class Producer<TPayload, TResult> {
|
|
|
30
32
|
* Get the result of a completed job
|
|
31
33
|
*/
|
|
32
34
|
getResult(id: string): Promise<TResult | null>;
|
|
35
|
+
/**
|
|
36
|
+
* Update TTL for a terminal job payload (result for completed jobs, error for failed jobs).
|
|
37
|
+
*/
|
|
38
|
+
updateResultTTL(id: string, ttlMs: number): Promise<UpdateResultTTLResult>;
|
|
33
39
|
/**
|
|
34
40
|
* Get the status of a job
|
|
35
41
|
*/
|
package/dist/producer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"producer.d.ts","sourceRoot":"","sources":["../src/producer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"producer.d.ts","sourceRoot":"","sources":["../src/producer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,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;AAInB,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;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,qBAAa,QAAQ,CAAC,QAAQ,EAAE,OAAO;;gBAQxB,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;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;IAuCxG;;OAEG;IACG,cAAc,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2DvG;;OAEG;IACG,MAAM,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA6BhD;;OAEG;IACG,SAAS,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IASrD;;OAEG;IACG,eAAe,CAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAqCjF;;OAEG;IACG,SAAS,CAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CAyCrE"}
|