bullmq 2.4.0 → 3.0.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/cjs/classes/backoffs.d.ts +3 -6
- package/dist/cjs/classes/backoffs.js +8 -8
- package/dist/cjs/classes/backoffs.js.map +1 -1
- package/dist/cjs/classes/flow-producer.js +2 -1
- package/dist/cjs/classes/flow-producer.js.map +1 -1
- package/dist/cjs/classes/job.d.ts +3 -3
- package/dist/cjs/classes/job.js +1 -1
- package/dist/cjs/classes/job.js.map +1 -1
- package/dist/cjs/classes/queue-base.js +1 -1
- package/dist/cjs/classes/queue-base.js.map +1 -1
- package/dist/cjs/classes/queue.d.ts +8 -6
- package/dist/cjs/classes/queue.js +10 -9
- package/dist/cjs/classes/queue.js.map +1 -1
- package/dist/cjs/classes/repeat.d.ts +0 -1
- package/dist/cjs/classes/repeat.js +4 -5
- package/dist/cjs/classes/repeat.js.map +1 -1
- package/dist/cjs/classes/scripts.d.ts +4 -4
- package/dist/cjs/classes/scripts.js +9 -16
- package/dist/cjs/classes/scripts.js.map +1 -1
- package/dist/cjs/classes/worker.d.ts +12 -3
- package/dist/cjs/classes/worker.js +50 -34
- package/dist/cjs/classes/worker.js.map +1 -1
- package/dist/cjs/commands/includes/getRateLimitTTL.lua +13 -0
- package/dist/cjs/commands/includes/moveJobFromWaitToActive.lua +15 -34
- package/dist/cjs/commands/includes/promoteDelayedJobs.lua +0 -6
- package/dist/cjs/commands/moveToActive-9.lua +11 -2
- package/dist/cjs/commands/moveToFinished-12.lua +8 -1
- package/dist/cjs/interfaces/advanced-options.d.ts +4 -4
- package/dist/cjs/interfaces/base-job-options.d.ts +0 -6
- package/dist/cjs/interfaces/queue-options.d.ts +0 -10
- package/dist/cjs/interfaces/rate-limiter-options.d.ts +0 -18
- package/dist/cjs/interfaces/repeat-options.d.ts +1 -6
- package/dist/cjs/scripts/moveToActive-9.js +35 -36
- package/dist/cjs/scripts/moveToActive-9.js.map +1 -1
- package/dist/cjs/scripts/moveToFinished-12.js +33 -36
- package/dist/cjs/scripts/moveToFinished-12.js.map +1 -1
- package/dist/cjs/types/backoff-strategy.d.ts +2 -0
- package/dist/cjs/types/backoff-strategy.js +3 -0
- package/dist/cjs/types/backoff-strategy.js.map +1 -0
- package/dist/cjs/types/index.d.ts +2 -1
- package/dist/cjs/types/index.js +2 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/utils.d.ts +1 -3
- package/dist/cjs/utils.js +1 -13
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/classes/backoffs.d.ts +3 -6
- package/dist/esm/classes/backoffs.js +8 -8
- package/dist/esm/classes/backoffs.js.map +1 -1
- package/dist/esm/classes/flow-producer.js +3 -2
- package/dist/esm/classes/flow-producer.js.map +1 -1
- package/dist/esm/classes/job.d.ts +3 -3
- package/dist/esm/classes/job.js +1 -1
- package/dist/esm/classes/job.js.map +1 -1
- package/dist/esm/classes/queue-base.js +1 -1
- package/dist/esm/classes/queue-base.js.map +1 -1
- package/dist/esm/classes/queue.d.ts +8 -6
- package/dist/esm/classes/queue.js +11 -10
- package/dist/esm/classes/queue.js.map +1 -1
- package/dist/esm/classes/repeat.d.ts +0 -1
- package/dist/esm/classes/repeat.js +4 -5
- package/dist/esm/classes/repeat.js.map +1 -1
- package/dist/esm/classes/scripts.d.ts +4 -4
- package/dist/esm/classes/scripts.js +7 -14
- package/dist/esm/classes/scripts.js.map +1 -1
- package/dist/esm/classes/worker.d.ts +12 -3
- package/dist/esm/classes/worker.js +50 -34
- package/dist/esm/classes/worker.js.map +1 -1
- package/dist/esm/commands/includes/getRateLimitTTL.lua +13 -0
- package/dist/esm/commands/includes/moveJobFromWaitToActive.lua +15 -34
- package/dist/esm/commands/includes/promoteDelayedJobs.lua +0 -6
- package/dist/esm/commands/moveToActive-9.lua +11 -2
- package/dist/esm/commands/moveToFinished-12.lua +8 -1
- package/dist/esm/interfaces/advanced-options.d.ts +4 -4
- package/dist/esm/interfaces/base-job-options.d.ts +0 -6
- package/dist/esm/interfaces/queue-options.d.ts +0 -10
- package/dist/esm/interfaces/rate-limiter-options.d.ts +0 -18
- package/dist/esm/interfaces/repeat-options.d.ts +1 -6
- package/dist/esm/scripts/moveToActive-9.js +35 -36
- package/dist/esm/scripts/moveToActive-9.js.map +1 -1
- package/dist/esm/scripts/moveToFinished-12.js +33 -36
- package/dist/esm/scripts/moveToFinished-12.js.map +1 -1
- package/dist/esm/types/backoff-strategy.d.ts +2 -0
- package/dist/esm/types/backoff-strategy.js +2 -0
- package/dist/esm/types/backoff-strategy.js.map +1 -0
- package/dist/esm/types/index.d.ts +2 -1
- package/dist/esm/types/index.js +2 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/utils.d.ts +1 -3
- package/dist/esm/utils.js +0 -11
- package/dist/esm/utils.js.map +1 -1
- package/package.json +1 -1
@@ -5,11 +5,6 @@ import { ParserOptions } from 'cron-parser';
|
|
5
5
|
* @see {@link https://docs.bullmq.io/guide/jobs/repeatable}
|
6
6
|
*/
|
7
7
|
export interface RepeatOptions extends Omit<ParserOptions, 'iterator'> {
|
8
|
-
/**
|
9
|
-
* @deprecated Use pattern option instead.
|
10
|
-
* A cron pattern
|
11
|
-
*/
|
12
|
-
cron?: string;
|
13
8
|
/**
|
14
9
|
* A repeat pattern
|
15
10
|
*/
|
@@ -20,7 +15,7 @@ export interface RepeatOptions extends Omit<ParserOptions, 'iterator'> {
|
|
20
15
|
limit?: number;
|
21
16
|
/**
|
22
17
|
* Repeat after this amount of milliseconds
|
23
|
-
* (`
|
18
|
+
* (`pattern` setting cannot be used together with this setting.)
|
24
19
|
*/
|
25
20
|
every?: number;
|
26
21
|
/**
|
@@ -49,41 +49,25 @@ local rcall = redis.call
|
|
49
49
|
local function moveJobFromWaitToActive(keys, keyPrefix, jobId, processedOn, opts)
|
50
50
|
-- Check if we need to perform rate limiting.
|
51
51
|
local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
|
52
|
+
local expireTime
|
52
53
|
if(maxJobs) then
|
53
54
|
local rateLimiterKey = keys[6];
|
54
|
-
local
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
if groupKey ~= jobId then
|
59
|
-
rateLimiterKey = rateLimiterKey .. ":" .. groupKey
|
60
|
-
end
|
55
|
+
local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
|
56
|
+
if jobCounter == 1 then
|
57
|
+
local limiterDuration = opts['limiter'] and opts['limiter']['duration']
|
58
|
+
rcall("PEXPIRE", rateLimiterKey, limiterDuration)
|
61
59
|
end
|
62
|
-
|
63
|
-
if
|
64
|
-
|
65
|
-
|
66
|
-
end
|
67
|
-
else
|
68
|
-
jobCounter = tonumber(rcall("INCR", rateLimiterKey))
|
69
|
-
end
|
70
|
-
local limiterDuration = opts['limiter'] and opts['limiter']['duration']
|
71
|
-
-- check if rate limit hit
|
72
|
-
if jobCounter ~= nil and jobCounter > maxJobs then
|
73
|
-
local exceedingJobs = jobCounter - maxJobs
|
74
|
-
local expireTime = tonumber(rcall("PTTL", rateLimiterKey))
|
75
|
-
local delay = expireTime + ((exceedingJobs - 1) * limiterDuration) / maxJobs;
|
76
|
-
local timestamp = delay + tonumber(processedOn)
|
77
|
-
-- put job into delayed queue
|
78
|
-
rcall("ZADD", keys[7], timestamp * 0x1000 + bit.band(jobCounter, 0xfff), jobId);
|
79
|
-
rcall("XADD", keys[4], "*", "event", "delayed", "jobId", jobId, "delay", timestamp);
|
80
|
-
-- remove from active queue
|
60
|
+
-- check if we passed rate limit, we need to remove the job and return expireTime
|
61
|
+
if jobCounter > maxJobs then
|
62
|
+
expireTime = rcall("PTTL", rateLimiterKey)
|
63
|
+
-- remove from active queue and add back to the wait list
|
81
64
|
rcall("LREM", keys[2], 1, jobId)
|
65
|
+
rcall("RPUSH", keys[1], jobId)
|
82
66
|
-- Return when we can process more jobs
|
83
|
-
return expireTime
|
67
|
+
return {0, 0, expireTime}
|
84
68
|
else
|
85
|
-
if jobCounter ==
|
86
|
-
rcall("
|
69
|
+
if jobCounter == maxJobs then
|
70
|
+
expireTime = rcall("PTTL", rateLimiterKey)
|
87
71
|
end
|
88
72
|
end
|
89
73
|
end
|
@@ -97,7 +81,7 @@ local function moveJobFromWaitToActive(keys, keyPrefix, jobId, processedOn, opts
|
|
97
81
|
rcall("XADD", keys[4], "*", "event", "active", "jobId", jobId, "prev", "waiting")
|
98
82
|
rcall("HSET", jobKey, "processedOn", processedOn)
|
99
83
|
rcall("HINCRBY", jobKey, "attemptsMade", 1)
|
100
|
-
return {rcall("HGETALL", jobKey), jobId} -- get job data
|
84
|
+
return {rcall("HGETALL", jobKey), jobId, expireTime} -- get job data
|
101
85
|
end
|
102
86
|
--[[
|
103
87
|
Function to return the next delayed job timestamp.
|
@@ -169,19 +153,34 @@ local function promoteDelayedJobs(delayedKey, waitKey, priorityKey, pausedKey,
|
|
169
153
|
rcall("HSET", prefix .. jobId, "delay", 0)
|
170
154
|
end
|
171
155
|
end
|
172
|
-
|
173
|
-
|
174
|
-
|
156
|
+
end
|
157
|
+
local function getRateLimitTTL(opts, limiterKey)
|
158
|
+
local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
|
159
|
+
if maxJobs then
|
160
|
+
local jobCounter = tonumber(rcall("GET", limiterKey))
|
161
|
+
if jobCounter ~= nil and jobCounter >= maxJobs then
|
162
|
+
local pttl = rcall("PTTL", KEYS[6])
|
163
|
+
if pttl > 0 then
|
164
|
+
return pttl
|
165
|
+
end
|
166
|
+
end
|
175
167
|
end
|
176
|
-
return
|
168
|
+
return 0
|
177
169
|
end
|
178
170
|
-- Check if there are delayed jobs that we can move to wait.
|
179
171
|
promoteDelayedJobs(KEYS[7], KEYS[1], KEYS[3], KEYS[8], KEYS[9], KEYS[4], ARGV[1], ARGV[2])
|
172
|
+
local opts
|
180
173
|
if (ARGV[3] ~= "") then
|
181
174
|
jobId = ARGV[3]
|
182
175
|
-- clean stalled key
|
183
176
|
rcall("SREM", KEYS[5], jobId)
|
184
177
|
else
|
178
|
+
-- Check if we are rate limited first.
|
179
|
+
opts = cmsgpack.unpack(ARGV[4])
|
180
|
+
local pttl = getRateLimitTTL(opts, KEYS[6])
|
181
|
+
if pttl > 0 then
|
182
|
+
return { 0, 0, pttl }
|
183
|
+
end
|
185
184
|
-- no job ID, try non-blocking move from wait to active
|
186
185
|
jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
|
187
186
|
end
|
@@ -189,14 +188,14 @@ end
|
|
189
188
|
if jobId == "0" then
|
190
189
|
rcall("LREM", KEYS[2], 1, 0)
|
191
190
|
elseif jobId then
|
192
|
-
|
191
|
+
opts = opts or cmsgpack.unpack(ARGV[4])
|
193
192
|
-- this script is not really moving, it is preparing the job for processing
|
194
193
|
return moveJobFromWaitToActive(KEYS, ARGV[1], jobId, ARGV[2], opts)
|
195
194
|
end
|
196
195
|
-- Return the timestamp for the next delayed job if any.
|
197
196
|
local nextTimestamp = getNextDelayedTimestamp(KEYS[7])
|
198
197
|
if (nextTimestamp ~= nil) then
|
199
|
-
return nextTimestamp - tonumber(ARGV[2])
|
198
|
+
return { 0, 0, 0, nextTimestamp - tonumber(ARGV[2])}
|
200
199
|
end
|
201
200
|
`;
|
202
201
|
exports.moveToActive = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"moveToActive-9.js","sourceRoot":"","sources":["../../../src/scripts/moveToActive-9.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"moveToActive-9.js","sourceRoot":"","sources":["../../../src/scripts/moveToActive-9.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoMf,CAAC;AACW,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,cAAc;IACpB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
|
@@ -134,41 +134,25 @@ end
|
|
134
134
|
local function moveJobFromWaitToActive(keys, keyPrefix, jobId, processedOn, opts)
|
135
135
|
-- Check if we need to perform rate limiting.
|
136
136
|
local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
|
137
|
+
local expireTime
|
137
138
|
if(maxJobs) then
|
138
139
|
local rateLimiterKey = keys[6];
|
139
|
-
local
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
if groupKey ~= jobId then
|
144
|
-
rateLimiterKey = rateLimiterKey .. ":" .. groupKey
|
145
|
-
end
|
146
|
-
end
|
147
|
-
local jobCounter
|
148
|
-
if groupKey ~= nil then
|
149
|
-
if rateLimiterKey ~= keys[6] then
|
150
|
-
jobCounter = tonumber(rcall("INCR", rateLimiterKey))
|
151
|
-
end
|
152
|
-
else
|
153
|
-
jobCounter = tonumber(rcall("INCR", rateLimiterKey))
|
140
|
+
local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
|
141
|
+
if jobCounter == 1 then
|
142
|
+
local limiterDuration = opts['limiter'] and opts['limiter']['duration']
|
143
|
+
rcall("PEXPIRE", rateLimiterKey, limiterDuration)
|
154
144
|
end
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
local expireTime = tonumber(rcall("PTTL", rateLimiterKey))
|
160
|
-
local delay = expireTime + ((exceedingJobs - 1) * limiterDuration) / maxJobs;
|
161
|
-
local timestamp = delay + tonumber(processedOn)
|
162
|
-
-- put job into delayed queue
|
163
|
-
rcall("ZADD", keys[7], timestamp * 0x1000 + bit.band(jobCounter, 0xfff), jobId);
|
164
|
-
rcall("XADD", keys[4], "*", "event", "delayed", "jobId", jobId, "delay", timestamp);
|
165
|
-
-- remove from active queue
|
145
|
+
-- check if we passed rate limit, we need to remove the job and return expireTime
|
146
|
+
if jobCounter > maxJobs then
|
147
|
+
expireTime = rcall("PTTL", rateLimiterKey)
|
148
|
+
-- remove from active queue and add back to the wait list
|
166
149
|
rcall("LREM", keys[2], 1, jobId)
|
150
|
+
rcall("RPUSH", keys[1], jobId)
|
167
151
|
-- Return when we can process more jobs
|
168
|
-
return expireTime
|
152
|
+
return {0, 0, expireTime}
|
169
153
|
else
|
170
|
-
if jobCounter ==
|
171
|
-
rcall("
|
154
|
+
if jobCounter == maxJobs then
|
155
|
+
expireTime = rcall("PTTL", rateLimiterKey)
|
172
156
|
end
|
173
157
|
end
|
174
158
|
end
|
@@ -182,7 +166,7 @@ local function moveJobFromWaitToActive(keys, keyPrefix, jobId, processedOn, opts
|
|
182
166
|
rcall("XADD", keys[4], "*", "event", "active", "jobId", jobId, "prev", "waiting")
|
183
167
|
rcall("HSET", jobKey, "processedOn", processedOn)
|
184
168
|
rcall("HINCRBY", jobKey, "attemptsMade", 1)
|
185
|
-
return {rcall("HGETALL", jobKey), jobId} -- get job data
|
169
|
+
return {rcall("HGETALL", jobKey), jobId, expireTime} -- get job data
|
186
170
|
end
|
187
171
|
--[[
|
188
172
|
Function to recursively move from waitingChildren to failed.
|
@@ -266,11 +250,6 @@ local function promoteDelayedJobs(delayedKey, waitKey, priorityKey, pausedKey,
|
|
266
250
|
rcall("HSET", prefix .. jobId, "delay", 0)
|
267
251
|
end
|
268
252
|
end
|
269
|
-
local nextTimestamp = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")[2]
|
270
|
-
if (nextTimestamp ~= nil) then
|
271
|
-
nextTimestamp = nextTimestamp / 0x1000
|
272
|
-
end
|
273
|
-
return nextTimestamp
|
274
253
|
end
|
275
254
|
--[[
|
276
255
|
Functions to remove jobs by max age.
|
@@ -421,6 +400,19 @@ local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDepende
|
|
421
400
|
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
|
422
401
|
end
|
423
402
|
end
|
403
|
+
local function getRateLimitTTL(opts, limiterKey)
|
404
|
+
local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
|
405
|
+
if maxJobs then
|
406
|
+
local jobCounter = tonumber(rcall("GET", limiterKey))
|
407
|
+
if jobCounter ~= nil and jobCounter >= maxJobs then
|
408
|
+
local pttl = rcall("PTTL", KEYS[6])
|
409
|
+
if pttl > 0 then
|
410
|
+
return pttl
|
411
|
+
end
|
412
|
+
end
|
413
|
+
end
|
414
|
+
return 0
|
415
|
+
end
|
424
416
|
local jobIdKey = KEYS[10]
|
425
417
|
if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
|
426
418
|
local opts = cmsgpack.unpack(ARGV[9])
|
@@ -507,6 +499,11 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
|
|
507
499
|
if (ARGV[7] == "1") then
|
508
500
|
-- Check if there are delayed jobs that can be promoted
|
509
501
|
promoteDelayedJobs(KEYS[7], KEYS[1], KEYS[3], KEYS[8], KEYS[11], KEYS[4], ARGV[8], timestamp)
|
502
|
+
-- Check if we are rate limited first.
|
503
|
+
local pttl = getRateLimitTTL(opts, KEYS[6])
|
504
|
+
if pttl > 0 then
|
505
|
+
return { 0, 0, pttl }
|
506
|
+
end
|
510
507
|
jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
|
511
508
|
if jobId == "0" then
|
512
509
|
rcall("LREM", KEYS[2], 1, 0)
|
@@ -518,7 +515,7 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
|
|
518
515
|
if (nextTimestamp ~= nil) then
|
519
516
|
-- The result is guaranteed to be positive, since the
|
520
517
|
-- ZRANGEBYSCORE command would have return a job otherwise.
|
521
|
-
return nextTimestamp - timestamp
|
518
|
+
return {0, 0, 0, nextTimestamp - timestamp}
|
522
519
|
end
|
523
520
|
end
|
524
521
|
local waitLen = rcall("LLEN", KEYS[1])
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"moveToFinished-12.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-12.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG
|
1
|
+
{"version":3,"file":"moveToFinished-12.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-12.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAghBf,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"backoff-strategy.js","sourceRoot":"","sources":["../../../src/types/backoff-strategy.ts"],"names":[],"mappings":""}
|
package/dist/cjs/types/index.js
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
const tslib_1 = require("tslib");
|
4
|
-
tslib_1.__exportStar(require("./
|
4
|
+
tslib_1.__exportStar(require("./backoff-strategy"), exports);
|
5
5
|
tslib_1.__exportStar(require("./finished-status"), exports);
|
6
6
|
tslib_1.__exportStar(require("./job-json-sandbox"), exports);
|
7
7
|
tslib_1.__exportStar(require("./job-options"), exports);
|
8
8
|
tslib_1.__exportStar(require("./job-type"), exports);
|
9
|
+
tslib_1.__exportStar(require("./repeat-strategy"), exports);
|
9
10
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,4DAAkC;AAClC,6DAAmC;AACnC,wDAA8B;AAC9B,qDAA2B;AAC3B,4DAAkC"}
|
package/dist/cjs/utils.d.ts
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
/// <reference types="node" />
|
2
2
|
/// <reference types="node" />
|
3
3
|
import { Cluster, Redis } from 'ioredis';
|
4
|
-
import { ChildMessage, ParentMessage,
|
5
|
-
import { JobsOptions } from './types';
|
4
|
+
import { ChildMessage, ParentMessage, RedisClient } from './interfaces';
|
6
5
|
import { ChildProcess } from 'child_process';
|
7
6
|
export declare const errorObject: {
|
8
7
|
[index: string]: any;
|
@@ -24,7 +23,6 @@ export declare function getParentKey(opts: {
|
|
24
23
|
id: string;
|
25
24
|
queue: string;
|
26
25
|
}): string;
|
27
|
-
export declare function jobIdForGroup(jobOpts: JobsOptions, data: any, queueOpts: QueueOptions): string;
|
28
26
|
export declare const clientCommandMessageReg: RegExp;
|
29
27
|
export declare const DELAY_TIME_5 = 5000;
|
30
28
|
export declare const DELAY_TIME_1 = 100;
|
package/dist/cjs/utils.js
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.QUEUE_EVENT_SUFFIX = exports.QUEUE_SCHEDULER_SUFFIX = exports.WORKER_SUFFIX = exports.parentSend = exports.isRedisVersionLowerThan = exports.childSend = exports.asyncSend = exports.isNotConnectionError = exports.DELAY_TIME_1 = exports.DELAY_TIME_5 = exports.clientCommandMessageReg = exports.
|
3
|
+
exports.QUEUE_EVENT_SUFFIX = exports.QUEUE_SCHEDULER_SUFFIX = exports.WORKER_SUFFIX = exports.parentSend = exports.isRedisVersionLowerThan = exports.childSend = exports.asyncSend = exports.isNotConnectionError = exports.DELAY_TIME_1 = exports.DELAY_TIME_5 = exports.clientCommandMessageReg = exports.getParentKey = exports.removeAllQueueData = exports.isRedisCluster = exports.isRedisInstance = exports.delay = exports.array2obj = exports.isEmpty = exports.lengthInUtf8Bytes = exports.tryCatch = exports.errorObject = void 0;
|
4
4
|
const ioredis_1 = require("ioredis");
|
5
5
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
6
6
|
// @ts-ignore
|
7
7
|
const utils_1 = require("ioredis/built/utils");
|
8
|
-
const uuid_1 = require("uuid");
|
9
|
-
const lodash_1 = require("lodash");
|
10
8
|
const semver = require("semver");
|
11
9
|
exports.errorObject = { value: null };
|
12
10
|
function tryCatch(fn, ctx, args) {
|
@@ -96,16 +94,6 @@ function getParentKey(opts) {
|
|
96
94
|
}
|
97
95
|
}
|
98
96
|
exports.getParentKey = getParentKey;
|
99
|
-
function jobIdForGroup(jobOpts, data, queueOpts) {
|
100
|
-
const jobId = jobOpts === null || jobOpts === void 0 ? void 0 : jobOpts.jobId;
|
101
|
-
const groupKeyPath = (0, lodash_1.get)(queueOpts, 'limiter.groupKey');
|
102
|
-
const groupKey = (0, lodash_1.get)(data, groupKeyPath);
|
103
|
-
if (groupKeyPath && !(typeof groupKey === 'undefined')) {
|
104
|
-
return `${jobId || (0, uuid_1.v4)()}:${groupKey}`;
|
105
|
-
}
|
106
|
-
return jobId;
|
107
|
-
}
|
108
|
-
exports.jobIdForGroup = jobIdForGroup;
|
109
97
|
exports.clientCommandMessageReg = /ERR unknown command ['`]\s*client\s*['`]/;
|
110
98
|
exports.DELAY_TIME_5 = 5000;
|
111
99
|
exports.DELAY_TIME_1 = 100;
|
package/dist/cjs/utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;AAAA,qCAAyC;AACzC,6DAA6D;AAC7D,aAAa;AACb,+CAAkE;AAClE
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
@@ -1,15 +1,12 @@
|
|
1
1
|
import { Job } from './job';
|
2
2
|
import { BackoffOptions } from '../interfaces/backoff-options';
|
3
|
+
import { BackoffStrategy } from '../types';
|
3
4
|
interface BuiltInStrategies {
|
4
|
-
[index: string]: (delay: number) =>
|
5
|
+
[index: string]: (delay: number) => BackoffStrategy;
|
5
6
|
}
|
6
|
-
export interface Strategies {
|
7
|
-
[index: string]: BackoffFunction;
|
8
|
-
}
|
9
|
-
export declare type BackoffFunction = (attemptsMade?: number, err?: Error, job?: Job) => number;
|
10
7
|
export declare class Backoffs {
|
11
8
|
static builtinStrategies: BuiltInStrategies;
|
12
9
|
static normalize(backoff: number | BackoffOptions): BackoffOptions;
|
13
|
-
static calculate(backoff: BackoffOptions, attemptsMade: number,
|
10
|
+
static calculate(backoff: BackoffOptions, attemptsMade: number, err: Error, job: Job, customStrategy?: BackoffStrategy): Promise<number> | number;
|
14
11
|
}
|
15
12
|
export {};
|
@@ -10,10 +10,10 @@ export class Backoffs {
|
|
10
10
|
return backoff;
|
11
11
|
}
|
12
12
|
}
|
13
|
-
static calculate(backoff, attemptsMade,
|
13
|
+
static calculate(backoff, attemptsMade, err, job, customStrategy) {
|
14
14
|
if (backoff) {
|
15
|
-
const strategy = lookupStrategy(backoff,
|
16
|
-
return strategy(attemptsMade, err, job);
|
15
|
+
const strategy = lookupStrategy(backoff, customStrategy);
|
16
|
+
return strategy(attemptsMade, backoff.type, err, job);
|
17
17
|
}
|
18
18
|
}
|
19
19
|
}
|
@@ -29,13 +29,13 @@ Backoffs.builtinStrategies = {
|
|
29
29
|
};
|
30
30
|
},
|
31
31
|
};
|
32
|
-
function lookupStrategy(backoff,
|
33
|
-
if (backoff.type in
|
34
|
-
return customStrategies[backoff.type];
|
35
|
-
}
|
36
|
-
else if (backoff.type in Backoffs.builtinStrategies) {
|
32
|
+
function lookupStrategy(backoff, customStrategy) {
|
33
|
+
if (backoff.type in Backoffs.builtinStrategies) {
|
37
34
|
return Backoffs.builtinStrategies[backoff.type](backoff.delay);
|
38
35
|
}
|
36
|
+
else if (customStrategy) {
|
37
|
+
return customStrategy;
|
38
|
+
}
|
39
39
|
else {
|
40
40
|
throw new Error(`Unknown backoff strategy ${backoff.type}.
|
41
41
|
If a custom backoff strategy is used, specify it when the queue is created.`);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"backoffs.js","sourceRoot":"","sources":["../../../src/classes/backoffs.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"backoffs.js","sourceRoot":"","sources":["../../../src/classes/backoffs.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,QAAQ;IAenB,MAAM,CAAC,SAAS,CAAC,OAAgC;QAC/C,IAAI,MAAM,CAAC,QAAQ,CAAS,OAAO,CAAC,EAAE;YACpC,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK,EAAU,OAAO;aACvB,CAAC;SACH;aAAM,IAAI,OAAO,EAAE;YAClB,OAAuB,OAAO,CAAC;SAChC;IACH,CAAC;IAED,MAAM,CAAC,SAAS,CACd,OAAuB,EACvB,YAAoB,EACpB,GAAU,EACV,GAAQ,EACR,cAAgC;QAEhC,IAAI,OAAO,EAAE;YACX,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;YAEzD,OAAO,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SACvD;IACH,CAAC;;AArCM,0BAAiB,GAAsB;IAC5C,KAAK,EAAE,UAAU,KAAa;QAC5B,OAAO;YACL,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;IAED,WAAW,EAAE,UAAU,KAAa;QAClC,OAAO,UAAU,YAAoB;YACnC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QAC7D,CAAC,CAAC;IACJ,CAAC;CACF,CAAC;AA4BJ,SAAS,cAAc,CACrB,OAAuB,EACvB,cAA+B;IAE/B,IAAI,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,iBAAiB,EAAE;QAC9C,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAChE;SAAM,IAAI,cAAc,EAAE;QACzB,OAAO,cAAc,CAAC;KACvB;SAAM;QACL,MAAM,IAAI,KAAK,CACb,4BAA4B,OAAO,CAAC,IAAI;kFACoC,CAC7E,CAAC;KACH;AACH,CAAC"}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { EventEmitter } from 'events';
|
2
2
|
import { get } from 'lodash';
|
3
3
|
import { v4 } from 'uuid';
|
4
|
-
import { getParentKey
|
4
|
+
import { getParentKey } from '../utils';
|
5
5
|
import { Job } from './job';
|
6
6
|
import { QueueKeys } from './queue-keys';
|
7
7
|
import { RedisConnection } from './redis-connection';
|
@@ -134,10 +134,11 @@ export class FlowProducer extends EventEmitter {
|
|
134
134
|
* @returns
|
135
135
|
*/
|
136
136
|
addNode({ multi, node, parent, queuesOpts }) {
|
137
|
+
var _a;
|
137
138
|
const queue = this.queueFromNode(node, new QueueKeys(node.prefix || this.opts.prefix));
|
138
139
|
const queueOpts = queuesOpts && queuesOpts[node.queueName];
|
139
140
|
const jobsOpts = get(queueOpts, 'defaultJobOptions');
|
140
|
-
const jobId =
|
141
|
+
const jobId = ((_a = node.opts) === null || _a === void 0 ? void 0 : _a.jobId) || v4();
|
141
142
|
const job = new this.Job(queue, node.name, node.data, Object.assign(Object.assign(Object.assign({}, (jobsOpts ? jobsOpts : {})), node.opts), { parent: parent === null || parent === void 0 ? void 0 : parent.parentOpts }), jobId);
|
142
143
|
const parentKey = getParentKey(parent === null || parent === void 0 ? void 0 : parent.parentOpts);
|
143
144
|
if (node.children && node.children.length > 0) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"flow-producer.js","sourceRoot":"","sources":["../../../src/classes/flow-producer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAS1B,OAAO,EAAE,YAAY,EAAE,
|
1
|
+
{"version":3,"file":"flow-producer.js","sourceRoot":"","sources":["../../../src/classes/flow-producer.ts"],"names":[],"mappings":"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"}
|
@@ -2,7 +2,7 @@ import { ChainableCommander } from 'ioredis';
|
|
2
2
|
import { JobJson, JobJsonRaw, ParentKeys, RedisClient } from '../interfaces';
|
3
3
|
import { FinishedStatus, JobsOptions, JobState, JobJsonSandbox } from '../types';
|
4
4
|
import { QueueEvents } from './queue-events';
|
5
|
-
import { MinimalQueue, ParentOpts, Scripts
|
5
|
+
import { MinimalQueue, ParentOpts, Scripts } from './scripts';
|
6
6
|
export declare type BulkJobOptions = Omit<JobsOptions, 'repeat'>;
|
7
7
|
export interface MoveToWaitingChildrenOpts {
|
8
8
|
child?: {
|
@@ -154,7 +154,7 @@ export declare class Job<DataType = any, ReturnType = any, NameType extends stri
|
|
154
154
|
* @returns
|
155
155
|
*/
|
156
156
|
static fromId<T = any, R = any, N extends string = string>(queue: MinimalQueue, jobId: string): Promise<Job<T, R, N> | undefined>;
|
157
|
-
toJSON(): Omit<this, "toJSON" | "scripts" | "prefix" | "
|
157
|
+
toJSON(): Omit<this, "toJSON" | "scripts" | "prefix" | "addJob" | "changeDelay" | "extendLock" | "getState" | "moveToDelayed" | "moveToWaitingChildren" | "promote" | "updateProgress" | "discard" | "queue" | "asJSON" | "asJSONSandbox" | "update" | "log" | "remove" | "moveToCompleted" | "moveToFailed" | "isCompleted" | "isFailed" | "isDelayed" | "isWaitingChildren" | "isActive" | "isWaiting" | "queueName" | "queueQualifiedName" | "getChildrenValues" | "getDependencies" | "getDependenciesCount" | "waitUntilFinished" | "retry">;
|
158
158
|
/**
|
159
159
|
* Prepares a job to be serialized for storage in Redis.
|
160
160
|
* @returns
|
@@ -206,7 +206,7 @@ export declare class Job<DataType = any, ReturnType = any, NameType extends stri
|
|
206
206
|
* @param fetchNext - True when wanting to fetch the next job.
|
207
207
|
* @returns Returns the jobData of the next job in the waiting queue.
|
208
208
|
*/
|
209
|
-
moveToCompleted(returnValue: ReturnType, token: string, fetchNext?: boolean): Promise<
|
209
|
+
moveToCompleted(returnValue: ReturnType, token: string, fetchNext?: boolean): Promise<any[]>;
|
210
210
|
/**
|
211
211
|
* Moves a job to the failed queue.
|
212
212
|
*
|
package/dist/esm/classes/job.js
CHANGED
@@ -344,7 +344,7 @@ export class Job {
|
|
344
344
|
!(err instanceof UnrecoverableError || err.name == 'UnrecoverableError')) {
|
345
345
|
const opts = queue.opts;
|
346
346
|
// Check if backoff is needed
|
347
|
-
const delay = await Backoffs.calculate(this.opts.backoff, this.attemptsMade, opts.settings && opts.settings.
|
347
|
+
const delay = await Backoffs.calculate(this.opts.backoff, this.attemptsMade, err, this, opts.settings && opts.settings.backoffStrategy);
|
348
348
|
if (delay === -1) {
|
349
349
|
moveToFailed = true;
|
350
350
|
}
|