SQS - Delivery Delay of 30 minutes

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.


Visibility timeout can do up to 12 hours. I think you can hack something together where you process a message but don't delete it and next time it is processed its been 12 hours. So a queue with one message and visibility timeout of 12 hours. That gets you a 12 hour cron.