Add EmailQueueService with Redis dispatch for async email jobs

Description

 EmailQueueService that persists email jobs to the email_jobs table and notifies the background worker via Redis.

  • Added EmailQueueService with enqueueMailerAction() to:
    • create a pending row in email_jobs
    • JSON-encode the payload
    • push the job ID to Redis queue cdli:queue:email
    • register the queue in cdli:queues
  • Added App\Service\QueueKeys with shared Redis queue constants/helpers used by EmailQueueService and TaskComponent:
    • QUEUE_REGISTRY_KEY
    • QUEUE_KEY_PREFIX
    • queueKey()
  • Added unit tests for:
    • DB write path
    • Redis push path
    • Redis failure handling (job remains pending in DB)
Edited by sonikagutha

Merge request reports

Loading
Loading