Currently for running on a single node actor system.
- Java 8
- Akka 2.4 or 2.5
- Scala 2.11 or 2.12
Add to your build sbt:
libraryDependencies += "com.markatta" %% "akron" % "1.2"
import com.markatta.akron._
val system = ActorSystem("system")
val crontab = system.actorOf(CronTab.props, "crontab")
val someOtherActor = system.actorOf(SomeOtherActor.props, "etc")
// send woo to someOtherActor once every minute
crontab ! CronTab.Schedule(someOtherActor, "woo", CronExpression("* * * * *"))
// there is also a type safe DSL for the expressions
import DSL._
crontab ! CronTab.Schedule(
someOtherActor,
"wee",
CronExpression(20, *, (mon, tue, wed), (feb, oct), *))
Scheduling a job gives it an unique id which is sent back in a CronTab.Scheduled
that can be used later
to unschedule that job. The crontab will watch the actor scheduled to receive messages for termination and
if terminated will remove all jobs sending messages to it.
CronTab.Unschedule(id)
can be used to unschedule jobs.
CronTab.GetListOfJobs
can be used to get a CronTab.ListOfJobs
back with all current crontab jobs.
- Artifacts for both Scala 2.11 and 2.12
- Alpha/preview of persistent crontab (serialization format may change in the future) which will allow for running for example a cluster singleton crontab that is resilient.
- Order of hour and minute not according to "normal" cron expressions fixed
- First release - all the things
Apache License, Version 2.0