--[[ 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]);