| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- const content = `--[[
- 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
- --[[
- Add delay marker if needed.
- ]]
- -- Includes
- --[[
- Function to return the next delayed job timestamp.
- ]]
- local function getNextDelayedTimestamp(delayedKey)
- local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
- if #result then
- local nextTimestamp = tonumber(result[2])
- if nextTimestamp ~= nil then
- return nextTimestamp / 0x1000
- end
- end
- end
- local function addDelayMarkerIfNeeded(markerKey, delayedKey)
- local nextTimestamp = getNextDelayedTimestamp(delayedKey)
- if nextTimestamp ~= nil then
- -- Replace the score of the marker with the newest known
- -- next timestamp.
- rcall("ZADD", markerKey, nextTimestamp, "1")
- end
- end
- 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]);
- `;
- export const pause = {
- name: 'pause',
- content,
- keys: 7,
- };
- //# sourceMappingURL=pause-7.js.map
|