addDelayedJob.lua 739 B

1234567891011121314151617181920212223
  1. --[[
  2. Adds a delayed job to the queue by doing the following:
  3. - Creates a new job key with the job data.
  4. - adds to delayed zset.
  5. - Emits a global event 'delayed' if the job is delayed.
  6. ]]
  7. -- Includes
  8. --- @include "addDelayMarkerIfNeeded"
  9. --- @include "getDelayedScore"
  10. local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
  11. maxEvents, markerKey, delay)
  12. local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
  13. rcall("ZADD", delayedKey, score, jobId)
  14. rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
  15. "jobId", jobId, "delay", delayedTimestamp)
  16. -- mark that a delayed job is available
  17. addDelayMarkerIfNeeded(markerKey, delayedKey)
  18. end