Search code examples
amazon-web-servicesamazon-sqs

SQS - Delivery Delay of 30 minutes


From the documentation of SQS, Max time delay we can configure for a message to hide from its consumers is 15 minutes - http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-delay-queues.html

Suppose if I need to hide the messages for a day, what is the pattern? For eg. I want to mimic a daily cron for doing some action.

Thanks


Solution

  • The simplest way to do this is as follows:

    SQS.push_to_queue({perform_message_at : "Thursday November 2022"},delay: 15 mins)
    

    Inside your worker

    message = SQS.poll_messages
    if message.perform_message_at > Time.now
       SQS.push_to_queue({perform_message_at : "Thursday November 
       2022"},delay:15 mins)
    else
       process_message(message)
    end
    

    Basically push the message back to the queue with the maximum delay and only process it when its processing time is less than the current time.

    HTH.