Scheduling an event for an hour, day, week, etc's time

In my app I let users send messages and emails. I'd like to enable them to schedule them for sending - i.e. set a time and date when they'll be sent.

I've got quite a lot of messages being sent - how best can I architect this so that it'll scale? I've got them being stored in PostgreSQL for now, but I have no way other than polling to check which need to be sent. I'd like to avoid polling if possible.

I'm currently running PHP, node.js, redis, PostgreSQL and RabbitMQ on EC2, so any combination of those is favourable.

If you are using just a database, you would be polling to send messages, but since you have RabbitMQ, you could set up a delayed message.

I found this article on the topic.