bullmq 2.3.2 → 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.
Files changed (97) hide show
  1. package/dist/cjs/classes/backoffs.d.ts +3 -6
  2. package/dist/cjs/classes/backoffs.js +8 -8
  3. package/dist/cjs/classes/backoffs.js.map +1 -1
  4. package/dist/cjs/classes/flow-producer.js +18 -2
  5. package/dist/cjs/classes/flow-producer.js.map +1 -1
  6. package/dist/cjs/classes/job.d.ts +3 -3
  7. package/dist/cjs/classes/job.js +1 -1
  8. package/dist/cjs/classes/job.js.map +1 -1
  9. package/dist/cjs/classes/queue-base.js +1 -1
  10. package/dist/cjs/classes/queue-base.js.map +1 -1
  11. package/dist/cjs/classes/queue.d.ts +8 -6
  12. package/dist/cjs/classes/queue.js +10 -9
  13. package/dist/cjs/classes/queue.js.map +1 -1
  14. package/dist/cjs/classes/repeat.d.ts +0 -1
  15. package/dist/cjs/classes/repeat.js +4 -5
  16. package/dist/cjs/classes/repeat.js.map +1 -1
  17. package/dist/cjs/classes/scripts.d.ts +4 -4
  18. package/dist/cjs/classes/scripts.js +9 -16
  19. package/dist/cjs/classes/scripts.js.map +1 -1
  20. package/dist/cjs/classes/worker.d.ts +12 -3
  21. package/dist/cjs/classes/worker.js +50 -34
  22. package/dist/cjs/classes/worker.js.map +1 -1
  23. package/dist/cjs/commands/includes/getRateLimitTTL.lua +13 -0
  24. package/dist/cjs/commands/includes/moveJobFromWaitToActive.lua +15 -34
  25. package/dist/cjs/commands/includes/promoteDelayedJobs.lua +0 -6
  26. package/dist/cjs/commands/moveToActive-9.lua +11 -2
  27. package/dist/cjs/commands/moveToFinished-12.lua +8 -1
  28. package/dist/cjs/commands/promote-6.lua +2 -10
  29. package/dist/cjs/interfaces/advanced-options.d.ts +4 -4
  30. package/dist/cjs/interfaces/base-job-options.d.ts +0 -6
  31. package/dist/cjs/interfaces/queue-options.d.ts +0 -10
  32. package/dist/cjs/interfaces/rate-limiter-options.d.ts +0 -18
  33. package/dist/cjs/interfaces/repeat-options.d.ts +1 -6
  34. package/dist/cjs/scripts/moveToActive-9.js +35 -36
  35. package/dist/cjs/scripts/moveToActive-9.js.map +1 -1
  36. package/dist/cjs/scripts/moveToFinished-12.js +33 -36
  37. package/dist/cjs/scripts/moveToFinished-12.js.map +1 -1
  38. package/dist/cjs/scripts/promote-6.js +15 -9
  39. package/dist/cjs/scripts/promote-6.js.map +1 -1
  40. package/dist/cjs/types/backoff-strategy.d.ts +2 -0
  41. package/dist/cjs/types/backoff-strategy.js +3 -0
  42. package/dist/cjs/types/backoff-strategy.js.map +1 -0
  43. package/dist/cjs/types/index.d.ts +2 -1
  44. package/dist/cjs/types/index.js +2 -1
  45. package/dist/cjs/types/index.js.map +1 -1
  46. package/dist/cjs/utils.d.ts +1 -3
  47. package/dist/cjs/utils.js +1 -13
  48. package/dist/cjs/utils.js.map +1 -1
  49. package/dist/esm/classes/backoffs.d.ts +3 -6
  50. package/dist/esm/classes/backoffs.js +8 -8
  51. package/dist/esm/classes/backoffs.js.map +1 -1
  52. package/dist/esm/classes/flow-producer.js +19 -3
  53. package/dist/esm/classes/flow-producer.js.map +1 -1
  54. package/dist/esm/classes/job.d.ts +3 -3
  55. package/dist/esm/classes/job.js +1 -1
  56. package/dist/esm/classes/job.js.map +1 -1
  57. package/dist/esm/classes/queue-base.js +1 -1
  58. package/dist/esm/classes/queue-base.js.map +1 -1
  59. package/dist/esm/classes/queue.d.ts +8 -6
  60. package/dist/esm/classes/queue.js +11 -10
  61. package/dist/esm/classes/queue.js.map +1 -1
  62. package/dist/esm/classes/repeat.d.ts +0 -1
  63. package/dist/esm/classes/repeat.js +4 -5
  64. package/dist/esm/classes/repeat.js.map +1 -1
  65. package/dist/esm/classes/scripts.d.ts +4 -4
  66. package/dist/esm/classes/scripts.js +7 -14
  67. package/dist/esm/classes/scripts.js.map +1 -1
  68. package/dist/esm/classes/worker.d.ts +12 -3
  69. package/dist/esm/classes/worker.js +50 -34
  70. package/dist/esm/classes/worker.js.map +1 -1
  71. package/dist/esm/commands/includes/getRateLimitTTL.lua +13 -0
  72. package/dist/esm/commands/includes/moveJobFromWaitToActive.lua +15 -34
  73. package/dist/esm/commands/includes/promoteDelayedJobs.lua +0 -6
  74. package/dist/esm/commands/moveToActive-9.lua +11 -2
  75. package/dist/esm/commands/moveToFinished-12.lua +8 -1
  76. package/dist/esm/commands/promote-6.lua +2 -10
  77. package/dist/esm/interfaces/advanced-options.d.ts +4 -4
  78. package/dist/esm/interfaces/base-job-options.d.ts +0 -6
  79. package/dist/esm/interfaces/queue-options.d.ts +0 -10
  80. package/dist/esm/interfaces/rate-limiter-options.d.ts +0 -18
  81. package/dist/esm/interfaces/repeat-options.d.ts +1 -6
  82. package/dist/esm/scripts/moveToActive-9.js +35 -36
  83. package/dist/esm/scripts/moveToActive-9.js.map +1 -1
  84. package/dist/esm/scripts/moveToFinished-12.js +33 -36
  85. package/dist/esm/scripts/moveToFinished-12.js.map +1 -1
  86. package/dist/esm/scripts/promote-6.js +15 -9
  87. package/dist/esm/scripts/promote-6.js.map +1 -1
  88. package/dist/esm/types/backoff-strategy.d.ts +2 -0
  89. package/dist/esm/types/backoff-strategy.js +2 -0
  90. package/dist/esm/types/backoff-strategy.js.map +1 -0
  91. package/dist/esm/types/index.d.ts +2 -1
  92. package/dist/esm/types/index.js +2 -1
  93. package/dist/esm/types/index.js.map +1 -1
  94. package/dist/esm/utils.d.ts +1 -3
  95. package/dist/esm/utils.js +0 -11
  96. package/dist/esm/utils.js.map +1 -1
  97. package/package.json +1 -1
@@ -46,41 +46,25 @@ local rcall = redis.call
46
46
  local function moveJobFromWaitToActive(keys, keyPrefix, jobId, processedOn, opts)
47
47
  -- Check if we need to perform rate limiting.
48
48
  local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
49
+ local expireTime
49
50
  if(maxJobs) then
50
51
  local rateLimiterKey = keys[6];
51
- local groupKey
52
- local groupKeyOpt = opts['limiter'] and opts['limiter']['groupKey'] or ""
53
- if groupKeyOpt ~= "" then
54
- groupKey = string.match(jobId, "[^:]+$")
55
- if groupKey ~= jobId then
56
- rateLimiterKey = rateLimiterKey .. ":" .. groupKey
57
- end
52
+ local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
53
+ if jobCounter == 1 then
54
+ local limiterDuration = opts['limiter'] and opts['limiter']['duration']
55
+ rcall("PEXPIRE", rateLimiterKey, limiterDuration)
58
56
  end
59
- local jobCounter
60
- if groupKey ~= nil then
61
- if rateLimiterKey ~= keys[6] then
62
- jobCounter = tonumber(rcall("INCR", rateLimiterKey))
63
- end
64
- else
65
- jobCounter = tonumber(rcall("INCR", rateLimiterKey))
66
- end
67
- local limiterDuration = opts['limiter'] and opts['limiter']['duration']
68
- -- check if rate limit hit
69
- if jobCounter ~= nil and jobCounter > maxJobs then
70
- local exceedingJobs = jobCounter - maxJobs
71
- local expireTime = tonumber(rcall("PTTL", rateLimiterKey))
72
- local delay = expireTime + ((exceedingJobs - 1) * limiterDuration) / maxJobs;
73
- local timestamp = delay + tonumber(processedOn)
74
- -- put job into delayed queue
75
- rcall("ZADD", keys[7], timestamp * 0x1000 + bit.band(jobCounter, 0xfff), jobId);
76
- rcall("XADD", keys[4], "*", "event", "delayed", "jobId", jobId, "delay", timestamp);
77
- -- remove from active queue
57
+ -- check if we passed rate limit, we need to remove the job and return expireTime
58
+ if jobCounter > maxJobs then
59
+ expireTime = rcall("PTTL", rateLimiterKey)
60
+ -- remove from active queue and add back to the wait list
78
61
  rcall("LREM", keys[2], 1, jobId)
62
+ rcall("RPUSH", keys[1], jobId)
79
63
  -- Return when we can process more jobs
80
- return expireTime
64
+ return {0, 0, expireTime}
81
65
  else
82
- if jobCounter == 1 then
83
- rcall("PEXPIRE", rateLimiterKey, limiterDuration)
66
+ if jobCounter == maxJobs then
67
+ expireTime = rcall("PTTL", rateLimiterKey)
84
68
  end
85
69
  end
86
70
  end
@@ -94,7 +78,7 @@ local function moveJobFromWaitToActive(keys, keyPrefix, jobId, processedOn, opts
94
78
  rcall("XADD", keys[4], "*", "event", "active", "jobId", jobId, "prev", "waiting")
95
79
  rcall("HSET", jobKey, "processedOn", processedOn)
96
80
  rcall("HINCRBY", jobKey, "attemptsMade", 1)
97
- return {rcall("HGETALL", jobKey), jobId} -- get job data
81
+ return {rcall("HGETALL", jobKey), jobId, expireTime} -- get job data
98
82
  end
99
83
  --[[
100
84
  Function to return the next delayed job timestamp.
@@ -166,19 +150,34 @@ local function promoteDelayedJobs(delayedKey, waitKey, priorityKey, pausedKey,
166
150
  rcall("HSET", prefix .. jobId, "delay", 0)
167
151
  end
168
152
  end
169
- local nextTimestamp = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")[2]
170
- if (nextTimestamp ~= nil) then
171
- nextTimestamp = nextTimestamp / 0x1000
153
+ end
154
+ local function getRateLimitTTL(opts, limiterKey)
155
+ local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
156
+ if maxJobs then
157
+ local jobCounter = tonumber(rcall("GET", limiterKey))
158
+ if jobCounter ~= nil and jobCounter >= maxJobs then
159
+ local pttl = rcall("PTTL", KEYS[6])
160
+ if pttl > 0 then
161
+ return pttl
162
+ end
163
+ end
172
164
  end
173
- return nextTimestamp
165
+ return 0
174
166
  end
175
167
  -- Check if there are delayed jobs that we can move to wait.
176
168
  promoteDelayedJobs(KEYS[7], KEYS[1], KEYS[3], KEYS[8], KEYS[9], KEYS[4], ARGV[1], ARGV[2])
169
+ local opts
177
170
  if (ARGV[3] ~= "") then
178
171
  jobId = ARGV[3]
179
172
  -- clean stalled key
180
173
  rcall("SREM", KEYS[5], jobId)
181
174
  else
175
+ -- Check if we are rate limited first.
176
+ opts = cmsgpack.unpack(ARGV[4])
177
+ local pttl = getRateLimitTTL(opts, KEYS[6])
178
+ if pttl > 0 then
179
+ return { 0, 0, pttl }
180
+ end
182
181
  -- no job ID, try non-blocking move from wait to active
183
182
  jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
184
183
  end
@@ -186,14 +185,14 @@ end
186
185
  if jobId == "0" then
187
186
  rcall("LREM", KEYS[2], 1, 0)
188
187
  elseif jobId then
189
- local opts = cmsgpack.unpack(ARGV[4])
188
+ opts = opts or cmsgpack.unpack(ARGV[4])
190
189
  -- this script is not really moving, it is preparing the job for processing
191
190
  return moveJobFromWaitToActive(KEYS, ARGV[1], jobId, ARGV[2], opts)
192
191
  end
193
192
  -- Return the timestamp for the next delayed job if any.
194
193
  local nextTimestamp = getNextDelayedTimestamp(KEYS[7])
195
194
  if (nextTimestamp ~= nil) then
196
- return nextTimestamp - tonumber(ARGV[2])
195
+ return { 0, 0, 0, nextTimestamp - tonumber(ARGV[2])}
197
196
  end
198
197
  `;
199
198
  export const moveToActive = {
@@ -1 +1 @@
1
- {"version":3,"file":"moveToActive-9.js","sourceRoot":"","sources":["../../../src/scripts/moveToActive-9.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqMf,CAAC;AACF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,cAAc;IACpB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
1
+ {"version":3,"file":"moveToActive-9.js","sourceRoot":"","sources":["../../../src/scripts/moveToActive-9.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoMf,CAAC;AACF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,cAAc;IACpB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -131,41 +131,25 @@ end
131
131
  local function moveJobFromWaitToActive(keys, keyPrefix, jobId, processedOn, opts)
132
132
  -- Check if we need to perform rate limiting.
133
133
  local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
134
+ local expireTime
134
135
  if(maxJobs) then
135
136
  local rateLimiterKey = keys[6];
136
- local groupKey
137
- local groupKeyOpt = opts['limiter'] and opts['limiter']['groupKey'] or ""
138
- if groupKeyOpt ~= "" then
139
- groupKey = string.match(jobId, "[^:]+$")
140
- if groupKey ~= jobId then
141
- rateLimiterKey = rateLimiterKey .. ":" .. groupKey
142
- end
143
- end
144
- local jobCounter
145
- if groupKey ~= nil then
146
- if rateLimiterKey ~= keys[6] then
147
- jobCounter = tonumber(rcall("INCR", rateLimiterKey))
148
- end
149
- else
150
- jobCounter = tonumber(rcall("INCR", rateLimiterKey))
137
+ local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
138
+ if jobCounter == 1 then
139
+ local limiterDuration = opts['limiter'] and opts['limiter']['duration']
140
+ rcall("PEXPIRE", rateLimiterKey, limiterDuration)
151
141
  end
152
- local limiterDuration = opts['limiter'] and opts['limiter']['duration']
153
- -- check if rate limit hit
154
- if jobCounter ~= nil and jobCounter > maxJobs then
155
- local exceedingJobs = jobCounter - maxJobs
156
- local expireTime = tonumber(rcall("PTTL", rateLimiterKey))
157
- local delay = expireTime + ((exceedingJobs - 1) * limiterDuration) / maxJobs;
158
- local timestamp = delay + tonumber(processedOn)
159
- -- put job into delayed queue
160
- rcall("ZADD", keys[7], timestamp * 0x1000 + bit.band(jobCounter, 0xfff), jobId);
161
- rcall("XADD", keys[4], "*", "event", "delayed", "jobId", jobId, "delay", timestamp);
162
- -- remove from active queue
142
+ -- check if we passed rate limit, we need to remove the job and return expireTime
143
+ if jobCounter > maxJobs then
144
+ expireTime = rcall("PTTL", rateLimiterKey)
145
+ -- remove from active queue and add back to the wait list
163
146
  rcall("LREM", keys[2], 1, jobId)
147
+ rcall("RPUSH", keys[1], jobId)
164
148
  -- Return when we can process more jobs
165
- return expireTime
149
+ return {0, 0, expireTime}
166
150
  else
167
- if jobCounter == 1 then
168
- rcall("PEXPIRE", rateLimiterKey, limiterDuration)
151
+ if jobCounter == maxJobs then
152
+ expireTime = rcall("PTTL", rateLimiterKey)
169
153
  end
170
154
  end
171
155
  end
@@ -179,7 +163,7 @@ local function moveJobFromWaitToActive(keys, keyPrefix, jobId, processedOn, opts
179
163
  rcall("XADD", keys[4], "*", "event", "active", "jobId", jobId, "prev", "waiting")
180
164
  rcall("HSET", jobKey, "processedOn", processedOn)
181
165
  rcall("HINCRBY", jobKey, "attemptsMade", 1)
182
- return {rcall("HGETALL", jobKey), jobId} -- get job data
166
+ return {rcall("HGETALL", jobKey), jobId, expireTime} -- get job data
183
167
  end
184
168
  --[[
185
169
  Function to recursively move from waitingChildren to failed.
@@ -263,11 +247,6 @@ local function promoteDelayedJobs(delayedKey, waitKey, priorityKey, pausedKey,
263
247
  rcall("HSET", prefix .. jobId, "delay", 0)
264
248
  end
265
249
  end
266
- local nextTimestamp = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")[2]
267
- if (nextTimestamp ~= nil) then
268
- nextTimestamp = nextTimestamp / 0x1000
269
- end
270
- return nextTimestamp
271
250
  end
272
251
  --[[
273
252
  Functions to remove jobs by max age.
@@ -418,6 +397,19 @@ local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDepende
418
397
  rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
419
398
  end
420
399
  end
400
+ local function getRateLimitTTL(opts, limiterKey)
401
+ local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
402
+ if maxJobs then
403
+ local jobCounter = tonumber(rcall("GET", limiterKey))
404
+ if jobCounter ~= nil and jobCounter >= maxJobs then
405
+ local pttl = rcall("PTTL", KEYS[6])
406
+ if pttl > 0 then
407
+ return pttl
408
+ end
409
+ end
410
+ end
411
+ return 0
412
+ end
421
413
  local jobIdKey = KEYS[10]
422
414
  if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
423
415
  local opts = cmsgpack.unpack(ARGV[9])
@@ -504,6 +496,11 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
504
496
  if (ARGV[7] == "1") then
505
497
  -- Check if there are delayed jobs that can be promoted
506
498
  promoteDelayedJobs(KEYS[7], KEYS[1], KEYS[3], KEYS[8], KEYS[11], KEYS[4], ARGV[8], timestamp)
499
+ -- Check if we are rate limited first.
500
+ local pttl = getRateLimitTTL(opts, KEYS[6])
501
+ if pttl > 0 then
502
+ return { 0, 0, pttl }
503
+ end
507
504
  jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
508
505
  if jobId == "0" then
509
506
  rcall("LREM", KEYS[2], 1, 0)
@@ -515,7 +512,7 @@ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
515
512
  if (nextTimestamp ~= nil) then
516
513
  -- The result is guaranteed to be positive, since the
517
514
  -- ZRANGEBYSCORE command would have return a job otherwise.
518
- return nextTimestamp - timestamp
515
+ return {0, 0, 0, nextTimestamp - timestamp}
519
516
  end
520
517
  end
521
518
  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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmhBf,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
1
+ {"version":3,"file":"moveToFinished-12.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-12.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAghBf,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
@@ -15,6 +15,20 @@ const content = `--[[
15
15
  local rcall = redis.call;
16
16
  local jobId = ARGV[2]
17
17
  -- Includes
18
+ --[[
19
+ Function to add job considering priority.
20
+ ]]
21
+ local function addJobWithPriority(priorityKey, priority, targetKey, jobId)
22
+ rcall("ZADD", priorityKey, priority, jobId)
23
+ local count = rcall("ZCOUNT", priorityKey, 0, priority)
24
+ local len = rcall("LLEN", targetKey)
25
+ local id = rcall("LINDEX", targetKey, len - (count - 1))
26
+ if id then
27
+ rcall("LINSERT", targetKey, "BEFORE", id, jobId)
28
+ else
29
+ rcall("RPUSH", targetKey, jobId)
30
+ end
31
+ end
18
32
  --[[
19
33
  Function to check for the meta.paused key to decide if we are paused or not
20
34
  (since an empty list and !EXISTS are not really the same).
@@ -39,15 +53,7 @@ if rcall("ZREM", KEYS[1], jobId) == 1 then
39
53
  rcall("LPUSH", target, jobId)
40
54
  else
41
55
  -- Priority add
42
- rcall("ZADD", KEYS[5], priority, jobId)
43
- local count = rcall("ZCOUNT", KEYS[5], 0, priority)
44
- local len = rcall("LLEN", target)
45
- local id = rcall("LINDEX", target, len - (count - 1))
46
- if id then
47
- rcall("LINSERT", target, "BEFORE", id, jobId)
48
- else
49
- rcall("RPUSH", target, jobId)
50
- end
56
+ addJobWithPriority(KEYS[5], priority, target, jobId)
51
57
  end
52
58
  -- Emit waiting event (wait..ing@token)
53
59
  rcall("XADD", KEYS[6], "*", "event", "waiting", "jobId", jobId, "prev", "delayed");
@@ -1 +1 @@
1
- {"version":3,"file":"promote-6.js","sourceRoot":"","sources":["../../../src/scripts/promote-6.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyDZ,CAAC;AACL,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,SAAS;IACf,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
1
+ {"version":3,"file":"promote-6.js","sourceRoot":"","sources":["../../../src/scripts/promote-6.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+DZ,CAAC;AACL,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,SAAS;IACf,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Job } from '../classes/job';
2
+ export declare type BackoffStrategy = (attemptsMade?: number, type?: string, err?: Error, job?: Job) => Promise<number> | number;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=backoff-strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backoff-strategy.js","sourceRoot":"","sources":["../../../src/types/backoff-strategy.ts"],"names":[],"mappings":""}
@@ -1,5 +1,6 @@
1
- export * from './repeat-strategy';
1
+ export * from './backoff-strategy';
2
2
  export * from './finished-status';
3
3
  export * from './job-json-sandbox';
4
4
  export * from './job-options';
5
5
  export * from './job-type';
6
+ export * from './repeat-strategy';
@@ -1,6 +1,7 @@
1
- export * from './repeat-strategy';
1
+ export * from './backoff-strategy';
2
2
  export * from './finished-status';
3
3
  export * from './job-json-sandbox';
4
4
  export * from './job-options';
5
5
  export * from './job-type';
6
+ export * from './repeat-strategy';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC"}
@@ -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, QueueOptions, RedisClient } from './interfaces';
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/esm/utils.js CHANGED
@@ -2,8 +2,6 @@ import { Cluster } from 'ioredis';
2
2
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
3
3
  // @ts-ignore
4
4
  import { CONNECTION_CLOSED_ERROR_MSG } from 'ioredis/built/utils';
5
- import { v4 } from 'uuid';
6
- import { get } from 'lodash';
7
5
  import * as semver from 'semver';
8
6
  export const errorObject = { value: null };
9
7
  export function tryCatch(fn, ctx, args) {
@@ -84,15 +82,6 @@ export function getParentKey(opts) {
84
82
  return `${opts.queue}:${opts.id}`;
85
83
  }
86
84
  }
87
- export function jobIdForGroup(jobOpts, data, queueOpts) {
88
- const jobId = jobOpts === null || jobOpts === void 0 ? void 0 : jobOpts.jobId;
89
- const groupKeyPath = get(queueOpts, 'limiter.groupKey');
90
- const groupKey = get(data, groupKeyPath);
91
- if (groupKeyPath && !(typeof groupKey === 'undefined')) {
92
- return `${jobId || v4()}:${groupKey}`;
93
- }
94
- return jobId;
95
- }
96
85
  export const clientCommandMessageReg = /ERR unknown command ['`]\s*client\s*['`]/;
97
86
  export const DELAY_TIME_5 = 5000;
98
87
  export const DELAY_TIME_1 = 100;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bullmq",
3
- "version": "2.3.2",
3
+ "version": "3.0.0",
4
4
  "description": "Queue for messages and jobs based on Redis",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",