I want to write an application that creates scheduled events at specific times. When the delay elapses the event notifies the application. The scheduled events must not be stored in the application's memory because if the application shuts down all scheduled events will be lost - I do not want to write a custom persistence layer for event scheduling. What system can provide persistent scheduling for my application that will call my application back when each event elapses?
I've been looking at message queues and Redis. I am not interested in Java solutions. The closest solution I found was RabbitMQ. Rabbit messages can be assigned a TTL and placed on a queue that is never consumed. Messages that expire fire DLX messages which can be examined to determine whether the message failed due to TTL expiry. However, messages will not necessarily expire in the correct order due to a caveat applicable to message TTLs whereby the message at the head of the queue will block other messages (with potentially shorter TTLs) from expiring earlier than itself. This caveat means RabbitMQ is unsuitable for this purpose and I cannot find any non-Java message broker that satisfies the requirement for a persistent scheduler.
Does programmable persistent scheduling software exist for Linux?