In the current system, we have a Scheduling Service that takes incoming HTTP API requests. It adds entries to a ScheduledTweetsDatabase. The ScheduledTweetsDatabase is some kind of relational database with fields for eventID (string), userID (string), content (string), scheduledFor (timestamp), and sent (boolean). It is indexed on eventID and scheduledFor. field | eventID | userID | content | scheduledFor | sent +---------+--------+---------+--------------+--------- type | string | string | string | timestamp | boolean indexed? | indexed | | | indexed | An ExecutorService polls the ScheduledTweetsDatabase for events with a scheduledFor in the past and sent=False. It then publishes the content by sending a POST request to the public Tweet API and updates the event with sent=True in the ScheduledTweetsDatabase.