43 lines
1003 B
Lua
43 lines
1003 B
Lua
--[[
|
|
Pauses or resumes a queue globably.
|
|
|
|
Input:
|
|
KEYS[1] 'wait' or 'paused''
|
|
KEYS[2] 'paused' or 'wait'
|
|
KEYS[3] 'meta'
|
|
KEYS[4] 'prioritized'
|
|
KEYS[5] events stream key
|
|
KEYS[6] 'delayed'
|
|
KEYS|7] 'marker'
|
|
|
|
ARGV[1] 'paused' or 'resumed'
|
|
|
|
Event:
|
|
publish paused or resumed event.
|
|
]]
|
|
local rcall = redis.call
|
|
|
|
-- Includes
|
|
--- @include "includes/addDelayMarkerIfNeeded"
|
|
|
|
local markerKey = KEYS[7]
|
|
local hasJobs = rcall("EXISTS", KEYS[1]) == 1
|
|
--TODO: check this logic to be reused when changing a delay
|
|
if hasJobs then rcall("RENAME", KEYS[1], KEYS[2]) end
|
|
|
|
if ARGV[1] == "paused" then
|
|
rcall("HSET", KEYS[3], "paused", 1)
|
|
rcall("DEL", markerKey)
|
|
else
|
|
rcall("HDEL", KEYS[3], "paused")
|
|
|
|
if hasJobs or rcall("ZCARD", KEYS[4]) > 0 then
|
|
-- Add marker if there are waiting or priority jobs
|
|
rcall("ZADD", markerKey, 0, "0")
|
|
else
|
|
addDelayMarkerIfNeeded(markerKey, KEYS[6])
|
|
end
|
|
end
|
|
|
|
rcall("XADD", KEYS[5], "*", "event", ARGV[1]);
|