Your requirements sound mutually exclusive. Things happen on a schedule or as random events, but not both.
This is similar to what you want for those events that do not fit into the scheduler, which will be broadcast to the listener, which the Contractor can cancel to process them asynchronously.
source share