Akka Scheduler は優れていますが、持続性に欠けています。
永続性を備えたジョブスケジューリングの良い解決策はありますか? できればRedis。
Akka Scheduler は優れていますが、持続性に欠けています。
永続性を備えたジョブスケジューリングの良い解決策はありますか? できればRedis。
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 のスケジューラーを永続的に使用できます。
以下は、バックエンドとして Redis を使用して分散タスク スケジューリングを処理するために最近作成した小さな Java ライブラリです: https://github.com/davidmarquis/redis-scheduler
とてもシンプルですが、すぐに始められるはずです。ジョブ データ自体は保持されませんが、適切なタイミングでジョブがトリガーされます。また、アプリケーションのインスタンスが複数ある場合、ジョブは単一のインスタンスで実行されます。
Java Quartz はスケジューリングに適したオプションであり、永続化に使用できる Jobstore API があります。これはhttp://www.ibm.com/developerworks/java/library/j-quartz/
しばらくの間、Quartzを Java でうまく使用してきましたが、最近、 redis バックエンドを追加しました。
免責事項:私は redis-quartz の設計に携わっていました。現在、redis-quartzはまだベータ版です。