JobRunr 提供了一个统一的编程模型,以可靠的方式处理后台任务,并在共享主机、专用主机或 JVM 实例内的云(你好 Kubernetes)上运行。
您可以在 Web 应用程序中启动小型和处理作业,也可以水平扩展并添加尽可能多的后台作业服务器,以处理高峰作业。JobRunr 将为您在所有服务器上分配负载。JobRunr 也是容错的 - 外部 Web 服务是否关闭?不用担心,该作业会通过智能退避策略自动重试 10 次。
与JobRunr类似有: Quartz 和Spring Task Scheduler,其他类似开源有 HangFire, Resque, Sidekiq, delayed_job, Celery 。
特征:
- 简单:只需使用 Java 8 lambda 来创建后台作业。
- 分布式和集群友好:使用乐观锁定保证由单个调度程序实例执行。
- 持久作业:使用 RDMBS(四个表和一个视图)或 noSQL 数据存储。
- 可嵌入:内置于现有应用程序中。
- 最小依赖:(ASM、 slf4j 以及jackson和 jackson-datatype-jsr310、gson或 JSON-B 兼容库)。
即发即忘的任务
即发即弃的作业只执行一次,并且几乎在创建后立即执行。专用工作池线程会尽快执行排队的后台作业,从而缩短请求的处理时间。
BackgroundJob.enqueue(() -> System.out.println("Simple!")); |
调度计划和延迟任务
计划调用和延迟的作业也只执行一次,但会在指定的时间运行。
BackgroundJob.schedule(Instant.now().plusHours(5), () -> System.out.println("Reliable!")); |
重复执行任务
重复性工作从未如此简单;只需调用以下方法即可使用CRON 表达式执行任何类型的重复任务。
BackgroundJob.scheduleRecurringly("my-recurring-job", Cron.daily(), () -> service.doWork()); |
在 Web 应用程序中处理后台任务……
您可以在任何 Web 应用程序中处理后台任务,我们对Spring提供全面支持- JobRunr 可以可靠地在 Web 应用程序中处理您的后台作业。
……或其他任何地方
就像封装在 docker 容器中的 Spring 控制台应用程序一样,它永远运行并轮询新的后台作业。
安装:
<dependency> |
只需设置您的application.properties:
# the job-scheduler is enabled by default |
点击标题 |