Skip to content
Crontab implementation for Akka
Scala
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
project
src
.gitignore
.travis.yml
LICENSE
README.md
build.sbt
version.sbt

README.md

A crontab actor for Akka

Build Status

Currently for running on a single node actor system.

Requirements

  • Java 8
  • Akka 2.4 or 2.5
  • Scala 2.11 or 2.12

How to use

Add to your build sbt:

libraryDependencies += "com.markatta" %% "akron" % "1.2"

Usage example

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.

Changelog

1.2

  • 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.

1.1

  • Order of hour and minute not according to "normal" cron expressions fixed

1.0

  • First release - all the things

License

Apache License, Version 2.0

You can’t perform that action at this time.