Akka Scheduler 很棒,但缺乏持久性。
对于具有持久性的作业调度,有什么好的解决方案吗?最好是 Redis。
我知道并且我们目前正在使用的最好的调度程序之一是Quartz。用 Java 编写,但我们在 Scala 项目中与 Akka 一起使用
这是我最近编写的一个小型 Java 库,用于使用 Redis 作为后端处理分布式任务调度:https ://github.com/davidmarquis/redis-scheduler
它非常简单,但应该可以让您很快上手。它本身不会保留您的工作数据,但会在正确的时间触发您的工作。此外,如果您的应用程序有多个实例,作业将在单个实例上执行。
我们已经成功使用Quartz和 Java 有一段时间了,最近添加了一个redis 后端。
免责声明:我参与了 redis-quartz 的设计。截至目前,redis-quartz仍处于测试阶段。
Java Quartz 是调度的好选择,并且具有可用于持久性的 Jobstore API。这是一个很好的阅读http://www.ibm.com/developerworks/java/library/j-quartz/
I would recommend you to try Redisson. It allows to usual java.lang.Runnable
and java.util.concurrent.Callable
interfaces. Here is code example:
RScheduledExecutorService executorService = redisson.getExecutorService("myExecutor");
ScheduledFuture<?> future = executorService.schedule(new CallableTask(), 10, 20, TimeUnit.MINUTES);
future.get();
// or cancel it
future.cancel(true);
Examples with cron expressions:
executorService.schedule(new RunnableTask(), CronSchedule.of("10 0/5 * * * ?"));
executorService.schedule(new RunnableTask(), CronSchedule.dailyAtHourAndMinute(10, 5));
executorService.schedule(new RunnableTask(), CronSchedule.weeklyOnDayAndHourAndMinute(12, 4, Calendar.MONDAY, Calendar.FRIDAY));
我知道您的问题是关于 Redis,但我刚刚遇到Akka-Scheduling for Akka,我认为它会很有用。
您可以坚持使用 Akka 的调度程序。