bunqueue 1.6.8 → 1.8.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/dist/application/queueManager.d.ts +4 -0
- package/dist/application/queueManager.d.ts.map +1 -1
- package/dist/application/queueManager.js +24 -2
- package/dist/application/queueManager.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/client/index.d.ts +3 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/queue.d.ts +25 -5
- package/dist/client/queue.d.ts.map +1 -1
- package/dist/client/queue.js +285 -41
- package/dist/client/queue.js.map +1 -1
- package/dist/client/tcpClient.d.ts +72 -0
- package/dist/client/tcpClient.d.ts.map +1 -0
- package/dist/client/tcpClient.js +371 -0
- package/dist/client/tcpClient.js.map +1 -0
- package/dist/client/tcpPool.d.ts +41 -0
- package/dist/client/tcpPool.d.ts.map +1 -0
- package/dist/client/tcpPool.js +110 -0
- package/dist/client/tcpPool.js.map +1 -0
- package/dist/client/types.d.ts +24 -1
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/types.js.map +1 -1
- package/dist/client/worker.d.ts +37 -5
- package/dist/client/worker.d.ts.map +1 -1
- package/dist/client/worker.js +320 -45
- package/dist/client/worker.js.map +1 -1
- package/dist/domain/types/command.d.ts +16 -1
- package/dist/domain/types/command.d.ts.map +1 -1
- package/dist/infrastructure/backup/s3Backup.d.ts.map +1 -1
- package/dist/infrastructure/backup/s3Backup.js +2 -1
- package/dist/infrastructure/backup/s3Backup.js.map +1 -1
- package/dist/infrastructure/server/handler.d.ts.map +1 -1
- package/dist/infrastructure/server/handler.js +7 -1
- package/dist/infrastructure/server/handler.js.map +1 -1
- package/dist/infrastructure/server/handlers/core.d.ts +1 -1
- package/dist/infrastructure/server/handlers/core.d.ts.map +1 -1
- package/dist/infrastructure/server/handlers/core.js +12 -3
- package/dist/infrastructure/server/handlers/core.js.map +1 -1
- package/dist/infrastructure/server/handlers/monitoring.d.ts +4 -1
- package/dist/infrastructure/server/handlers/monitoring.d.ts.map +1 -1
- package/dist/infrastructure/server/handlers/monitoring.js +18 -0
- package/dist/infrastructure/server/handlers/monitoring.js.map +1 -1
- package/dist/infrastructure/server/http.d.ts.map +1 -1
- package/dist/infrastructure/server/http.js +2 -1
- package/dist/infrastructure/server/http.js.map +1 -1
- package/dist/infrastructure/server/rateLimiter.js +1 -1
- package/dist/infrastructure/server/rateLimiter.js.map +1 -1
- package/dist/mcp/index.js +2 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/shared/version.d.ts +1 -1
- package/dist/shared/version.d.ts.map +1 -1
- package/dist/shared/version.js +3 -27
- package/dist/shared/version.js.map +1 -1
- package/package.json +2 -2
package/dist/client/worker.d.ts
CHANGED
|
@@ -1,22 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Worker - BullMQ-style API
|
|
3
|
+
* Default: TCP connection to localhost:6789
|
|
4
|
+
* Optional: embedded mode with { embedded: true }
|
|
5
|
+
*
|
|
6
|
+
* Performance optimizations:
|
|
7
|
+
* - Batch pull: fetches multiple jobs per round-trip (batchSize option)
|
|
8
|
+
* - Batch ACK with results: acknowledges multiple jobs per round-trip
|
|
9
|
+
* - Connection pooling: optional pool for high-concurrency scenarios
|
|
10
|
+
* - Long polling: reduces round-trips when queue is empty
|
|
11
|
+
* - TCP heartbeats: keeps jobs alive for stall detection
|
|
3
12
|
*/
|
|
4
13
|
import { EventEmitter } from 'events';
|
|
5
14
|
import type { WorkerOptions, Processor } from './types';
|
|
6
15
|
/**
|
|
7
16
|
* Worker class for processing jobs
|
|
17
|
+
* Default: connects to bunqueue server via TCP
|
|
18
|
+
* Use { embedded: true } for in-process mode
|
|
19
|
+
* Set BUNQUEUE_EMBEDDED=1 env var to force embedded mode
|
|
8
20
|
*/
|
|
9
21
|
export declare class Worker<T = unknown, R = unknown> extends EventEmitter {
|
|
10
22
|
readonly name: string;
|
|
11
23
|
private readonly opts;
|
|
12
24
|
private readonly processor;
|
|
25
|
+
private readonly embedded;
|
|
26
|
+
private readonly tcp;
|
|
27
|
+
private readonly tcpPool;
|
|
13
28
|
private running;
|
|
14
29
|
private activeJobs;
|
|
15
30
|
private pollTimer;
|
|
16
|
-
private readonly
|
|
31
|
+
private readonly activeJobIds;
|
|
32
|
+
private heartbeatTimer;
|
|
17
33
|
private consecutiveErrors;
|
|
34
|
+
private readonly pendingJobs;
|
|
35
|
+
private readonly pendingAcks;
|
|
36
|
+
private ackTimer;
|
|
37
|
+
private readonly ackBatchSize;
|
|
38
|
+
private readonly ackInterval;
|
|
18
39
|
private static readonly MAX_BACKOFF_MS;
|
|
19
40
|
private static readonly BASE_BACKOFF_MS;
|
|
41
|
+
private static readonly MAX_POLL_TIMEOUT;
|
|
20
42
|
constructor(name: string, processor: Processor<T, R>, opts?: WorkerOptions);
|
|
21
43
|
/** Start processing */
|
|
22
44
|
run(): void;
|
|
@@ -26,12 +48,22 @@ export declare class Worker<T = unknown, R = unknown> extends EventEmitter {
|
|
|
26
48
|
resume(): void;
|
|
27
49
|
/** Close worker gracefully */
|
|
28
50
|
close(force?: boolean): Promise<void>;
|
|
51
|
+
/** Start global heartbeat timer for all active jobs (TCP mode) */
|
|
52
|
+
private startGlobalHeartbeat;
|
|
53
|
+
/** Send batch heartbeat for all active jobs */
|
|
54
|
+
private sendBatchHeartbeat;
|
|
29
55
|
private poll;
|
|
30
56
|
private tryProcess;
|
|
57
|
+
/** Pull batch (embedded) */
|
|
58
|
+
private pullBatchEmbedded;
|
|
59
|
+
/** Pull batch of jobs via TCP with optional long polling */
|
|
60
|
+
private pullBatchTcp;
|
|
61
|
+
/** Parse job from TCP response */
|
|
62
|
+
private parseJob;
|
|
63
|
+
/** Queue ACK for batch processing with result */
|
|
64
|
+
private queueAck;
|
|
65
|
+
/** Flush pending ACKs in batch with results */
|
|
66
|
+
private flushAcks;
|
|
31
67
|
private processJob;
|
|
32
|
-
/** Start heartbeat timer for a job */
|
|
33
|
-
private startHeartbeat;
|
|
34
|
-
/** Stop heartbeat timer for a job */
|
|
35
|
-
private stopHeartbeat;
|
|
36
68
|
}
|
|
37
69
|
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/client/worker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/client/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAqB,MAAM,SAAS,CAAC;AA2B3E;;;;;GAKG;AACH,qBAAa,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAE,SAAQ,YAAY;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAGjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAU;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAO;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAU;gBAEtC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAE,aAAkB;IA0C9E,uBAAuB;IACvB,GAAG,IAAI,IAAI;IAaX,uBAAuB;IACvB,KAAK,IAAI,IAAI;IAQb,wBAAwB;IACxB,MAAM,IAAI,IAAI;IAId,8BAA8B;IACxB,KAAK,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCzC,kEAAkE;IAClE,OAAO,CAAC,oBAAoB;IAM5B,+CAA+C;YACjC,kBAAkB;IAiBhC,OAAO,CAAC,IAAI;YAaE,UAAU;IAkFxB,4BAA4B;YACd,iBAAiB;IAS/B,4DAA4D;YAC9C,YAAY;IAuB1B,kCAAkC;IAClC,OAAO,CAAC,QAAQ;IAiDhB,iDAAiD;IACjD,OAAO,CAAC,QAAQ;IAoBhB,+CAA+C;YACjC,SAAS;YA2CT,UAAU;CA6EzB"}
|
package/dist/client/worker.js
CHANGED
|
@@ -1,33 +1,85 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Worker - BullMQ-style API
|
|
3
|
+
* Default: TCP connection to localhost:6789
|
|
4
|
+
* Optional: embedded mode with { embedded: true }
|
|
5
|
+
*
|
|
6
|
+
* Performance optimizations:
|
|
7
|
+
* - Batch pull: fetches multiple jobs per round-trip (batchSize option)
|
|
8
|
+
* - Batch ACK with results: acknowledges multiple jobs per round-trip
|
|
9
|
+
* - Connection pooling: optional pool for high-concurrency scenarios
|
|
10
|
+
* - Long polling: reduces round-trips when queue is empty
|
|
11
|
+
* - TCP heartbeats: keeps jobs alive for stall detection
|
|
3
12
|
*/
|
|
4
13
|
import { EventEmitter } from 'events';
|
|
5
14
|
import { getSharedManager } from './manager';
|
|
15
|
+
// TCP connection pool is always used in TCP mode
|
|
16
|
+
import { TcpConnectionPool } from './tcpPool';
|
|
6
17
|
import { createPublicJob } from './types';
|
|
7
18
|
import { jobId } from '../domain/types/job';
|
|
19
|
+
/** Check if embedded mode should be forced (for tests) */
|
|
20
|
+
const FORCE_EMBEDDED = process.env.BUNQUEUE_EMBEDDED === '1';
|
|
8
21
|
/**
|
|
9
22
|
* Worker class for processing jobs
|
|
23
|
+
* Default: connects to bunqueue server via TCP
|
|
24
|
+
* Use { embedded: true } for in-process mode
|
|
25
|
+
* Set BUNQUEUE_EMBEDDED=1 env var to force embedded mode
|
|
10
26
|
*/
|
|
11
27
|
export class Worker extends EventEmitter {
|
|
12
28
|
name;
|
|
13
29
|
opts;
|
|
14
30
|
processor;
|
|
31
|
+
embedded;
|
|
32
|
+
tcp;
|
|
33
|
+
tcpPool;
|
|
15
34
|
running = false;
|
|
16
35
|
activeJobs = 0;
|
|
17
36
|
pollTimer = null;
|
|
18
|
-
|
|
37
|
+
activeJobIds = new Set(); // Track active job IDs for heartbeat
|
|
38
|
+
heartbeatTimer = null;
|
|
19
39
|
consecutiveErrors = 0;
|
|
40
|
+
pendingJobs = []; // Buffer for batch-pulled jobs
|
|
41
|
+
// Batch ACK state
|
|
42
|
+
pendingAcks = [];
|
|
43
|
+
ackTimer = null;
|
|
44
|
+
ackBatchSize;
|
|
45
|
+
ackInterval;
|
|
20
46
|
static MAX_BACKOFF_MS = 30_000;
|
|
21
47
|
static BASE_BACKOFF_MS = 100;
|
|
48
|
+
static MAX_POLL_TIMEOUT = 30_000;
|
|
22
49
|
constructor(name, processor, opts = {}) {
|
|
23
50
|
super();
|
|
24
51
|
this.name = name;
|
|
25
52
|
this.processor = processor;
|
|
53
|
+
this.embedded = opts.embedded ?? FORCE_EMBEDDED;
|
|
54
|
+
const concurrency = opts.concurrency ?? 1;
|
|
26
55
|
this.opts = {
|
|
27
|
-
concurrency
|
|
56
|
+
concurrency,
|
|
28
57
|
autorun: opts.autorun ?? true,
|
|
29
58
|
heartbeatInterval: opts.heartbeatInterval ?? 10000,
|
|
59
|
+
batchSize: Math.min(opts.batchSize ?? 10, 1000), // Default 10, max 1000
|
|
60
|
+
pollTimeout: Math.min(opts.pollTimeout ?? 0, Worker.MAX_POLL_TIMEOUT), // Default 0, max 30s
|
|
61
|
+
embedded: this.embedded,
|
|
30
62
|
};
|
|
63
|
+
// Batch ACK settings
|
|
64
|
+
this.ackBatchSize = opts.batchSize ?? 10; // ACK when this many complete
|
|
65
|
+
this.ackInterval = 50; // Or after 50ms, whichever comes first
|
|
66
|
+
if (this.embedded) {
|
|
67
|
+
this.tcp = null;
|
|
68
|
+
this.tcpPool = null;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
const connOpts = opts.connection ?? {};
|
|
72
|
+
// Always use pool - default poolSize = min(concurrency, 8), user can override
|
|
73
|
+
const poolSize = connOpts.poolSize ?? Math.min(concurrency, 8);
|
|
74
|
+
// Use connection pool (always enabled for TCP mode)
|
|
75
|
+
this.tcpPool = new TcpConnectionPool({
|
|
76
|
+
host: connOpts.host ?? 'localhost',
|
|
77
|
+
port: connOpts.port ?? 6789,
|
|
78
|
+
token: connOpts.token,
|
|
79
|
+
poolSize,
|
|
80
|
+
});
|
|
81
|
+
this.tcp = this.tcpPool;
|
|
82
|
+
}
|
|
31
83
|
if (this.opts.autorun) {
|
|
32
84
|
this.run();
|
|
33
85
|
}
|
|
@@ -38,6 +90,10 @@ export class Worker extends EventEmitter {
|
|
|
38
90
|
return;
|
|
39
91
|
this.running = true;
|
|
40
92
|
this.emit('ready');
|
|
93
|
+
// Start global heartbeat timer for TCP mode
|
|
94
|
+
if (!this.embedded && this.opts.heartbeatInterval > 0) {
|
|
95
|
+
this.startGlobalHeartbeat();
|
|
96
|
+
}
|
|
41
97
|
this.poll();
|
|
42
98
|
}
|
|
43
99
|
/** Pause processing */
|
|
@@ -59,18 +115,54 @@ export class Worker extends EventEmitter {
|
|
|
59
115
|
clearTimeout(this.pollTimer);
|
|
60
116
|
this.pollTimer = null;
|
|
61
117
|
}
|
|
62
|
-
// Stop
|
|
63
|
-
|
|
64
|
-
clearInterval(
|
|
118
|
+
// Stop global heartbeat timer
|
|
119
|
+
if (this.heartbeatTimer) {
|
|
120
|
+
clearInterval(this.heartbeatTimer);
|
|
121
|
+
this.heartbeatTimer = null;
|
|
122
|
+
}
|
|
123
|
+
// Flush pending ACKs
|
|
124
|
+
await this.flushAcks();
|
|
125
|
+
// Stop ACK timer
|
|
126
|
+
if (this.ackTimer) {
|
|
127
|
+
clearTimeout(this.ackTimer);
|
|
128
|
+
this.ackTimer = null;
|
|
65
129
|
}
|
|
66
|
-
this.heartbeatTimers.clear();
|
|
67
130
|
if (!force) {
|
|
68
131
|
while (this.activeJobs > 0) {
|
|
69
132
|
await new Promise((r) => setTimeout(r, 50));
|
|
70
133
|
}
|
|
71
134
|
}
|
|
135
|
+
// Close pool if using pooled connections (not shared)
|
|
136
|
+
if (this.tcpPool) {
|
|
137
|
+
this.tcpPool.close();
|
|
138
|
+
}
|
|
72
139
|
this.emit('closed');
|
|
73
140
|
}
|
|
141
|
+
/** Start global heartbeat timer for all active jobs (TCP mode) */
|
|
142
|
+
startGlobalHeartbeat() {
|
|
143
|
+
this.heartbeatTimer = setInterval(() => {
|
|
144
|
+
void this.sendBatchHeartbeat();
|
|
145
|
+
}, this.opts.heartbeatInterval);
|
|
146
|
+
}
|
|
147
|
+
/** Send batch heartbeat for all active jobs */
|
|
148
|
+
async sendBatchHeartbeat() {
|
|
149
|
+
if (this.activeJobIds.size === 0 || !this.tcp)
|
|
150
|
+
return;
|
|
151
|
+
try {
|
|
152
|
+
const ids = Array.from(this.activeJobIds);
|
|
153
|
+
if (ids.length === 1) {
|
|
154
|
+
await this.tcp.send({ cmd: 'JobHeartbeat', id: ids[0] });
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
await this.tcp.send({ cmd: 'JobHeartbeatB', ids });
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
// Heartbeat errors are non-fatal, just emit for logging
|
|
162
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
163
|
+
this.emit('error', Object.assign(error, { context: 'heartbeat' }));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
74
166
|
poll() {
|
|
75
167
|
if (!this.running)
|
|
76
168
|
return;
|
|
@@ -85,28 +177,57 @@ export class Worker extends EventEmitter {
|
|
|
85
177
|
async tryProcess() {
|
|
86
178
|
if (!this.running)
|
|
87
179
|
return;
|
|
88
|
-
const manager = getSharedManager();
|
|
89
180
|
try {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
181
|
+
// Get job from pending buffer or fetch new batch
|
|
182
|
+
let job = this.pendingJobs.shift() ?? null;
|
|
183
|
+
if (!job) {
|
|
184
|
+
// Fetch new batch - calculate how many we can process
|
|
185
|
+
const availableSlots = this.opts.concurrency - this.activeJobs;
|
|
186
|
+
const batchSize = Math.min(this.opts.batchSize, availableSlots, 1000);
|
|
187
|
+
if (batchSize > 0) {
|
|
188
|
+
const jobs = this.embedded
|
|
189
|
+
? await this.pullBatchEmbedded(batchSize)
|
|
190
|
+
: await this.pullBatchTcp(batchSize);
|
|
191
|
+
// Take first job, buffer the rest
|
|
192
|
+
const firstJob = jobs.shift();
|
|
193
|
+
if (firstJob) {
|
|
194
|
+
job = firstJob;
|
|
195
|
+
this.pendingJobs.push(...jobs);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (job) {
|
|
200
|
+
// Reset error count only when we successfully got a job
|
|
201
|
+
this.consecutiveErrors = 0;
|
|
94
202
|
this.activeJobs++;
|
|
95
|
-
|
|
203
|
+
const jobIdStr = String(job.id);
|
|
204
|
+
this.activeJobIds.add(jobIdStr);
|
|
205
|
+
void this.processJob(job).finally(() => {
|
|
96
206
|
this.activeJobs--;
|
|
207
|
+
this.activeJobIds.delete(jobIdStr);
|
|
97
208
|
if (this.running)
|
|
98
209
|
this.poll();
|
|
99
210
|
});
|
|
100
|
-
|
|
211
|
+
// Process more jobs from buffer if available
|
|
212
|
+
if (this.activeJobs < this.opts.concurrency && this.pendingJobs.length > 0) {
|
|
213
|
+
setImmediate(() => {
|
|
214
|
+
void this.tryProcess();
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
else if (this.activeJobs < this.opts.concurrency) {
|
|
218
|
+
// No buffered jobs, schedule another fetch
|
|
101
219
|
setImmediate(() => {
|
|
102
220
|
void this.tryProcess();
|
|
103
221
|
});
|
|
104
222
|
}
|
|
105
223
|
}
|
|
106
224
|
else {
|
|
225
|
+
// No jobs available, wait before polling again
|
|
226
|
+
// Use longer wait if long polling is enabled and server didn't block
|
|
227
|
+
const waitTime = this.opts.pollTimeout > 0 ? 10 : 50;
|
|
107
228
|
this.pollTimer = setTimeout(() => {
|
|
108
229
|
this.poll();
|
|
109
|
-
},
|
|
230
|
+
}, waitTime);
|
|
110
231
|
}
|
|
111
232
|
}
|
|
112
233
|
catch (err) {
|
|
@@ -126,38 +247,210 @@ export class Worker extends EventEmitter {
|
|
|
126
247
|
}, backoffMs);
|
|
127
248
|
}
|
|
128
249
|
}
|
|
129
|
-
|
|
250
|
+
/** Pull batch (embedded) */
|
|
251
|
+
async pullBatchEmbedded(count) {
|
|
130
252
|
const manager = getSharedManager();
|
|
253
|
+
if (count === 1) {
|
|
254
|
+
const job = await manager.pull(this.name, 0);
|
|
255
|
+
return job ? [job] : [];
|
|
256
|
+
}
|
|
257
|
+
return manager.pullBatch(this.name, count, 0);
|
|
258
|
+
}
|
|
259
|
+
/** Pull batch of jobs via TCP with optional long polling */
|
|
260
|
+
async pullBatchTcp(count) {
|
|
261
|
+
if (!this.tcp)
|
|
262
|
+
return [];
|
|
263
|
+
const response = await this.tcp.send({
|
|
264
|
+
cmd: count === 1 ? 'PULL' : 'PULLB',
|
|
265
|
+
queue: this.name,
|
|
266
|
+
timeout: this.opts.pollTimeout, // Long polling support
|
|
267
|
+
count, // For PULLB
|
|
268
|
+
});
|
|
269
|
+
if (!response.ok)
|
|
270
|
+
return [];
|
|
271
|
+
// Handle single job response (PULL)
|
|
272
|
+
if (count === 1 && response.job) {
|
|
273
|
+
return [this.parseJob(response.job)];
|
|
274
|
+
}
|
|
275
|
+
// Handle batch response (PULLB)
|
|
276
|
+
const jobs = response.jobs;
|
|
277
|
+
if (!jobs || jobs.length === 0)
|
|
278
|
+
return [];
|
|
279
|
+
return jobs.map((j) => this.parseJob(j));
|
|
280
|
+
}
|
|
281
|
+
/** Parse job from TCP response */
|
|
282
|
+
parseJob(jobData) {
|
|
283
|
+
const priority = jobData.priority;
|
|
284
|
+
const createdAt = jobData.createdAt;
|
|
285
|
+
const runAt = jobData.runAt;
|
|
286
|
+
const attempts = jobData.attempts;
|
|
287
|
+
const maxAttempts = jobData.maxAttempts;
|
|
288
|
+
const backoff = jobData.backoff;
|
|
289
|
+
const ttl = jobData.ttl;
|
|
290
|
+
const timeout = jobData.timeout;
|
|
291
|
+
const uniqueKey = jobData.uniqueKey;
|
|
292
|
+
const customId = jobData.customId;
|
|
293
|
+
const progress = jobData.progress;
|
|
294
|
+
const progressMessage = jobData.progressMessage;
|
|
295
|
+
const removeOnComplete = jobData.removeOnComplete;
|
|
296
|
+
return {
|
|
297
|
+
id: jobId(jobData.id),
|
|
298
|
+
queue: this.name,
|
|
299
|
+
data: jobData.data,
|
|
300
|
+
priority: priority ?? 0,
|
|
301
|
+
createdAt: createdAt ?? Date.now(),
|
|
302
|
+
runAt: runAt ?? Date.now(),
|
|
303
|
+
startedAt: Date.now(),
|
|
304
|
+
completedAt: null,
|
|
305
|
+
attempts: attempts ?? 0,
|
|
306
|
+
maxAttempts: maxAttempts ?? 3,
|
|
307
|
+
backoff: backoff ?? 1000,
|
|
308
|
+
ttl: ttl ?? null,
|
|
309
|
+
timeout: timeout ?? null,
|
|
310
|
+
uniqueKey: uniqueKey ?? null,
|
|
311
|
+
customId: customId ?? null,
|
|
312
|
+
progress: progress ?? 0,
|
|
313
|
+
progressMessage: progressMessage ?? null,
|
|
314
|
+
dependsOn: [],
|
|
315
|
+
parentId: null,
|
|
316
|
+
childrenIds: [],
|
|
317
|
+
childrenCompleted: 0,
|
|
318
|
+
tags: [],
|
|
319
|
+
groupId: null,
|
|
320
|
+
lifo: false,
|
|
321
|
+
removeOnComplete: removeOnComplete ?? false,
|
|
322
|
+
removeOnFail: false,
|
|
323
|
+
stallCount: 0,
|
|
324
|
+
stallTimeout: null,
|
|
325
|
+
lastHeartbeat: Date.now(),
|
|
326
|
+
repeat: null,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
/** Queue ACK for batch processing with result */
|
|
330
|
+
queueAck(id, result) {
|
|
331
|
+
this.pendingAcks.push({
|
|
332
|
+
id,
|
|
333
|
+
result,
|
|
334
|
+
resolve: () => { },
|
|
335
|
+
reject: () => { },
|
|
336
|
+
});
|
|
337
|
+
// Flush if batch is full
|
|
338
|
+
if (this.pendingAcks.length >= this.ackBatchSize) {
|
|
339
|
+
void this.flushAcks();
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
// Start timer for partial batch (if not already running)
|
|
343
|
+
this.ackTimer ??= setTimeout(() => {
|
|
344
|
+
this.ackTimer = null;
|
|
345
|
+
void this.flushAcks();
|
|
346
|
+
}, this.ackInterval);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/** Flush pending ACKs in batch with results */
|
|
350
|
+
async flushAcks() {
|
|
351
|
+
if (this.pendingAcks.length === 0)
|
|
352
|
+
return;
|
|
353
|
+
const batch = this.pendingAcks.splice(0, this.pendingAcks.length);
|
|
354
|
+
if (this.ackTimer) {
|
|
355
|
+
clearTimeout(this.ackTimer);
|
|
356
|
+
this.ackTimer = null;
|
|
357
|
+
}
|
|
358
|
+
try {
|
|
359
|
+
if (this.embedded) {
|
|
360
|
+
// Embedded: batch ack with results
|
|
361
|
+
const manager = getSharedManager();
|
|
362
|
+
const items = batch.map((a) => ({ id: jobId(a.id), result: a.result }));
|
|
363
|
+
await manager.ackBatchWithResults(items);
|
|
364
|
+
}
|
|
365
|
+
else if (this.tcp) {
|
|
366
|
+
// TCP: use ACKB command with results
|
|
367
|
+
const response = await this.tcp.send({
|
|
368
|
+
cmd: 'ACKB',
|
|
369
|
+
ids: batch.map((a) => a.id),
|
|
370
|
+
results: batch.map((a) => a.result), // Include results
|
|
371
|
+
});
|
|
372
|
+
if (!response.ok) {
|
|
373
|
+
const errMsg = response.error;
|
|
374
|
+
throw new Error(errMsg ?? 'Batch ACK failed');
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
// Resolve all promises
|
|
378
|
+
for (const ack of batch) {
|
|
379
|
+
ack.resolve();
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
catch (err) {
|
|
383
|
+
// Reject all promises
|
|
384
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
385
|
+
for (const ack of batch) {
|
|
386
|
+
ack.reject(error);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
async processJob(internalJob) {
|
|
131
391
|
const jobData = internalJob.data;
|
|
132
392
|
const name = jobData?.name ?? 'default';
|
|
133
393
|
const jobIdStr = String(internalJob.id);
|
|
134
|
-
// Start heartbeat timer for this job
|
|
135
|
-
this.startHeartbeat(jobIdStr, internalJob);
|
|
136
394
|
// Create job with progress and log methods
|
|
137
395
|
const job = createPublicJob(internalJob, name, async (id, progress, message) => {
|
|
138
|
-
|
|
396
|
+
if (this.embedded) {
|
|
397
|
+
const manager = getSharedManager();
|
|
398
|
+
await manager.updateProgress(jobId(id), progress, message);
|
|
399
|
+
}
|
|
400
|
+
else if (this.tcp) {
|
|
401
|
+
await this.tcp.send({
|
|
402
|
+
cmd: 'Progress',
|
|
403
|
+
id,
|
|
404
|
+
progress,
|
|
405
|
+
message,
|
|
406
|
+
});
|
|
407
|
+
}
|
|
139
408
|
this.emit('progress', job, progress);
|
|
140
|
-
}, (id, message) => {
|
|
141
|
-
|
|
142
|
-
|
|
409
|
+
}, async (id, message) => {
|
|
410
|
+
if (this.embedded) {
|
|
411
|
+
const manager = getSharedManager();
|
|
412
|
+
manager.addLog(jobId(id), message);
|
|
413
|
+
}
|
|
414
|
+
else if (this.tcp) {
|
|
415
|
+
await this.tcp.send({
|
|
416
|
+
cmd: 'AddLog',
|
|
417
|
+
id,
|
|
418
|
+
message,
|
|
419
|
+
});
|
|
420
|
+
}
|
|
143
421
|
});
|
|
144
422
|
this.emit('active', job);
|
|
145
423
|
try {
|
|
146
424
|
const result = await this.processor(job);
|
|
147
|
-
|
|
148
|
-
|
|
425
|
+
// Use batch ACK for both modes
|
|
426
|
+
if (this.embedded) {
|
|
427
|
+
const manager = getSharedManager();
|
|
428
|
+
await manager.ack(internalJob.id, result);
|
|
429
|
+
}
|
|
430
|
+
else {
|
|
431
|
+
// Queue for batch ACK with result
|
|
432
|
+
this.queueAck(jobIdStr, result);
|
|
433
|
+
}
|
|
149
434
|
job.returnvalue = result;
|
|
150
435
|
this.emit('completed', job, result);
|
|
151
436
|
}
|
|
152
437
|
catch (error) {
|
|
153
|
-
this.stopHeartbeat(jobIdStr);
|
|
154
438
|
const err = error instanceof Error ? error : new Error(String(error));
|
|
155
|
-
// Try to fail the job
|
|
439
|
+
// Try to fail the job (not batched - failures are less common)
|
|
156
440
|
try {
|
|
157
|
-
|
|
441
|
+
if (this.embedded) {
|
|
442
|
+
const manager = getSharedManager();
|
|
443
|
+
await manager.fail(internalJob.id, err.message);
|
|
444
|
+
}
|
|
445
|
+
else if (this.tcp) {
|
|
446
|
+
await this.tcp.send({
|
|
447
|
+
cmd: 'FAIL',
|
|
448
|
+
id: internalJob.id,
|
|
449
|
+
error: err.message,
|
|
450
|
+
});
|
|
451
|
+
}
|
|
158
452
|
}
|
|
159
453
|
catch (failError) {
|
|
160
|
-
// Emit error for fail operation failure
|
|
161
454
|
const wrappedError = failError instanceof Error ? failError : new Error(String(failError));
|
|
162
455
|
this.emit('error', Object.assign(wrappedError, { context: 'fail', jobId: jobIdStr }));
|
|
163
456
|
}
|
|
@@ -165,23 +458,5 @@ export class Worker extends EventEmitter {
|
|
|
165
458
|
this.emit('failed', job, err);
|
|
166
459
|
}
|
|
167
460
|
}
|
|
168
|
-
/** Start heartbeat timer for a job */
|
|
169
|
-
startHeartbeat(jobIdStr, internalJob) {
|
|
170
|
-
if (this.opts.heartbeatInterval <= 0)
|
|
171
|
-
return;
|
|
172
|
-
const timer = setInterval(() => {
|
|
173
|
-
// Update lastHeartbeat on the internal job
|
|
174
|
-
internalJob.lastHeartbeat = Date.now();
|
|
175
|
-
}, this.opts.heartbeatInterval);
|
|
176
|
-
this.heartbeatTimers.set(jobIdStr, timer);
|
|
177
|
-
}
|
|
178
|
-
/** Stop heartbeat timer for a job */
|
|
179
|
-
stopHeartbeat(jobIdStr) {
|
|
180
|
-
const timer = this.heartbeatTimers.get(jobIdStr);
|
|
181
|
-
if (timer) {
|
|
182
|
-
clearInterval(timer);
|
|
183
|
-
this.heartbeatTimers.delete(jobIdStr);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
461
|
}
|
|
187
462
|
//# sourceMappingURL=worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/client/worker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/client/worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,7 @@ export interface AckCommand extends BaseCommand {
|
|
|
51
51
|
export interface AckBatchCommand extends BaseCommand {
|
|
52
52
|
readonly cmd: 'ACKB';
|
|
53
53
|
readonly ids: string[];
|
|
54
|
+
readonly results?: unknown[];
|
|
54
55
|
}
|
|
55
56
|
export interface FailCommand extends BaseCommand {
|
|
56
57
|
readonly cmd: 'FAIL';
|
|
@@ -223,6 +224,20 @@ export interface HeartbeatCommand extends BaseCommand {
|
|
|
223
224
|
readonly cmd: 'Heartbeat';
|
|
224
225
|
readonly id: string;
|
|
225
226
|
}
|
|
227
|
+
/** Job-level heartbeat for stall detection */
|
|
228
|
+
export interface JobHeartbeatCommand extends BaseCommand {
|
|
229
|
+
readonly cmd: 'JobHeartbeat';
|
|
230
|
+
readonly id: string;
|
|
231
|
+
}
|
|
232
|
+
/** Batch job heartbeat for multiple jobs */
|
|
233
|
+
export interface JobHeartbeatBatchCommand extends BaseCommand {
|
|
234
|
+
readonly cmd: 'JobHeartbeatB';
|
|
235
|
+
readonly ids: string[];
|
|
236
|
+
}
|
|
237
|
+
/** Ping for connection health check */
|
|
238
|
+
export interface PingCommand extends BaseCommand {
|
|
239
|
+
readonly cmd: 'Ping';
|
|
240
|
+
}
|
|
226
241
|
export interface RegisterWorkerCommand extends BaseCommand {
|
|
227
242
|
readonly cmd: 'RegisterWorker';
|
|
228
243
|
readonly name: string;
|
|
@@ -263,7 +278,7 @@ export interface AuthCommand extends BaseCommand {
|
|
|
263
278
|
readonly token: string;
|
|
264
279
|
}
|
|
265
280
|
/** Union of all commands */
|
|
266
|
-
export type Command = PushCommand | PushBatchCommand | PullCommand | PullBatchCommand | AckCommand | AckBatchCommand | FailCommand | GetJobCommand | GetStateCommand | GetResultCommand | GetJobsCommand | GetJobCountsCommand | GetJobByCustomIdCommand | CountCommand | GetProgressCommand | CancelCommand | ProgressCommand | UpdateCommand | ChangePriorityCommand | PromoteCommand | WaitJobCommand | MoveToDelayedCommand | DiscardCommand | PauseCommand | ResumeCommand | IsPausedCommand | DrainCommand | ObliterateCommand | ListQueuesCommand | CleanCommand | DlqCommand | RetryDlqCommand | PurgeDlqCommand | RateLimitCommand | SetConcurrencyCommand | RateLimitClearCommand | ClearConcurrencyCommand | CronCommand | CronDeleteCommand | CronListCommand | AddLogCommand | GetLogsCommand | HeartbeatCommand | RegisterWorkerCommand | UnregisterWorkerCommand | ListWorkersCommand | AddWebhookCommand | RemoveWebhookCommand | ListWebhooksCommand | StatsCommand | MetricsCommand | PrometheusCommand | AuthCommand;
|
|
281
|
+
export type Command = PushCommand | PushBatchCommand | PullCommand | PullBatchCommand | AckCommand | AckBatchCommand | FailCommand | GetJobCommand | GetStateCommand | GetResultCommand | GetJobsCommand | GetJobCountsCommand | GetJobByCustomIdCommand | CountCommand | GetProgressCommand | CancelCommand | ProgressCommand | UpdateCommand | ChangePriorityCommand | PromoteCommand | WaitJobCommand | MoveToDelayedCommand | DiscardCommand | PauseCommand | ResumeCommand | IsPausedCommand | DrainCommand | ObliterateCommand | ListQueuesCommand | CleanCommand | DlqCommand | RetryDlqCommand | PurgeDlqCommand | RateLimitCommand | SetConcurrencyCommand | RateLimitClearCommand | ClearConcurrencyCommand | CronCommand | CronDeleteCommand | CronListCommand | AddLogCommand | GetLogsCommand | HeartbeatCommand | JobHeartbeatCommand | JobHeartbeatBatchCommand | PingCommand | RegisterWorkerCommand | UnregisterWorkerCommand | ListWorkersCommand | AddWebhookCommand | RemoveWebhookCommand | ListWebhooksCommand | StatsCommand | MetricsCommand | PrometheusCommand | AuthCommand;
|
|
267
282
|
/** Extract command type */
|
|
268
283
|
export type CommandType = Command['cmd'];
|
|
269
284
|
export {};
|