類似Quartz的分散式Java後臺作業計劃程式:JobRunr
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> <groupId>org.jobrunr</groupId> <artifactId>jobrunr</artifactId> <version>3.0.1</version> </dependency> 對於Spring Boot,加入 |
只需設定您的application.properties:
# the job-scheduler is enabled by default # the background-job-server and dashboard are disabled by default org.jobrunr.job-scheduler.enabled=true org.jobrunr.background-job-server.enabled=true org.jobrunr.dashboard.enabled=true 或者程式碼: @SpringBootApplication public class JobRunrApplication { public static void main(String[] args) { SpringApplication.run(JobRunrApplication.class, args); } @Bean public JobScheduler initJobRunr(DataSource dataSource, JobActivator jobActivator) { return JobRunr.configure() .useJobActivator(jobActivator) .useStorageProvider(SqlStorageProviderFactory .using(dataSource)) .useBackgroundJobServer() .useDashboard() .initialize(); } } |
點選標題 |
相關文章
- 分散式後臺作業排程器JobRunr介紹 - JAXenter分散式
- 如何在Spring中使用JobRunr實現後臺作業? - BaeldungSpring
- 鏈家分散式作業平臺分散式
- 分散式定時器 Quartz 作業中注入 Spring 依賴項分散式定時器quartzSpring
- java後臺搭建學習計劃Java
- 幽默:駭客式程式設計其實類似機器學習!程式設計機器學習
- java分散式(類特性)Java分散式
- Quartz.Net 作業排程後臺管理系統,基於ExtjsquartzJS
- Circuit: Go語言編寫的最小分散式程式設計式的作業系統UIGo分散式程式設計作業系統
- 分散式資料庫 ZNBase 的分散式計劃生成分散式資料庫
- gmcache一個用go寫的分散式快取,類似memcachedGo分散式快取
- SerenityOS:類似Unix的圖形化桌面作業系統作業系統
- 美國莫德納公司的新冠病毒mRNA疫苗來自於其類似計算機作業系統的平臺計算機作業系統
- JAVA課後作業Java
- Rust中的後臺作業 - kerkourRust
- 用 C++ 實現類似於 JAVA HttpServlet 的程式設計介面C++JavaHTTPServlet程式設計
- Java程式設計師—Java職業生涯規劃Java程式設計師
- 分散式作業管理系統 Asgard分散式
- 利用excel製作類似店鋪盈虧的計算方法Excel
- 作業控制(後臺執行)
- 使用Quartz實現定時作業quartz
- 轉:類似SQL中的split函式SQL函式
- mysql 效果類似split函式MySql函式
- bastion-rs/bastion:類似Akka的高可用分散式容錯Rust執行時AST分散式Rust
- java Quartz 定時任務管理類Javaquartz
- 淺談分散式定時任務之quartz分散式quartz
- Java程式設計第二章作業Java程式設計
- carlo:類似Electron.js的谷歌平臺JS谷歌
- 系統設計:如何設計一個分散式作業排程器 ?- Rakshesh分散式
- 實現Quartz.NET的HTTP作業排程quartzHTTP
- e語言 類似eval函式作用的函式
- 嵌入式作業6.2 ADC 程式設計程式設計
- 微信後團隊分享:微信後臺基於Ray的分散式AI計算技術實踐分散式AI
- 關於創業計劃創作指南創業
- 微信後臺開發作業講解
- JAVA 分散式 - 分散式介紹Java分散式
- Java程式設計第四章作業Java程式設計
- JAVA分散式優惠券系統後臺 手把手實戰開發Java分散式