BackgroundJob . enqueue (() -> System . out . println ( "This is all you need for distributed jobs!" ));
Java 8 ラムダのみを使用して、 Java アプリケーション内でfire-and-forget ジョブ、遅延ジョブ、スケジュールされたジョブ、繰り返しジョブを実行する驚くほど簡単な方法。 CPU と I/O を集中的に使用する、長時間実行および短時間実行のジョブがサポートされています。永続ストレージは、RDBMS (Postgres、MariaDB/MySQL、Oracle、SQL Server、DB2、SQLite など) または NoSQL (ElasticSearch、MongoDB、Redis) のいずれかを介して実行されます。
JobRunr は、バックグラウンド タスクを信頼性の高い方法で処理するための統合プログラミング モデルを提供し、JVM インスタンス内の共有ホスティング、専用ホスティング、またはクラウド (こんにちは Kubernetes) 上でバックグラウンド タスクを実行します。
JobRunr を構築していただきありがとうございます。とても気に入っています。その前は Ruby と Golang で同様のライブラリを使用していましたが、今のところ JobRunr が最も使いやすいです。特にダッシュボードが気に入っています、素晴らしいですね!アレックス・デニソフ
jobrunr.io でさらにフィードバックをご覧ください。
これが適している可能性のあるいくつかのシナリオ:
小規模に開始して Web アプリ内でジョブを処理することも、水平方向に拡張してジョブのピークに合わせて必要な数のバックグラウンド ジョブ サーバーを追加することもできます。 JobRunr はすべてのサーバーに負荷を分散します。 JobRunr はフォールトトレラントでもあります。外部の Web サービスがダウンしていませんか?心配する必要はありません。ジョブはスマート バックオフ ポリシーにより自動的に 10 回再試行されます。
JobRunr は、HangFire、Resque、Sidekiq、delayed_job、Celery に代わる Java であり、Quartz や Spring タスク スケジューラに似ています。
ファイアアンドフォーゲットタスク
専用のワーカー プール スレッドは、キューに入れられたバックグラウンド ジョブをできるだけ早く実行し、リクエストの処理時間を短縮します。
BackgroundJob . enqueue (() -> System . out . println ( "Simple!" ));
遅延したタスク
スケジュールされたバックグラウンド ジョブは、指定された時間が経過した後にのみ実行されます。
BackgroundJob . schedule ( Instant . now (). plusHours ( 5 ), () -> System . out . println ( "Reliable!" ));
定期的なタスク
定期的な仕事はこれまでになく簡単になりました。次のメソッドを呼び出すだけで、CRON 式を使用してあらゆる種類の繰り返しタスクを実行できます。
BackgroundJob . scheduleRecurrently ( "my-recurring-job" , Cron . daily (), () -> service . doWork ());
Web アプリケーション内のバックグラウンド タスクを処理します…
どの Web アプリケーションでもバックグラウンド タスクを処理でき、Spring は徹底的にサポートされています。JobRunr は、Web アプリケーション内でバックグラウンド ジョブを処理するのに信頼性があります。
…または他の場所でも
Docker コンテナにラップされた Spring コンソール アプリケーションのように、永久に実行され続け、新しいバックグラウンド ジョブをポーリングします。
詳細については、https://www.jobrunr.io を参照してください。
JobRunr は Maven Central で利用できます。必要なのは、次の依存関係を追加することだけです。
< dependency >
< groupId >org.jobrunr</ groupId >
< artifactId >jobrunr</ artifactId >
< version >${jobrunr.version}</ version >
</ dependency >
JobRunr に依存関係を追加するだけです。
implementation ' org.jobrunr:jobrunr:${jobrunr.version} '
jobrunr-spring-boot-3-starter を依存関係に追加すれば、準備はほぼ完了です。 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
javax.sql.DataSource
を定義し、起動時に次のコードを配置します。
@ 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 (). getJobScheduler ();
}
}
パッチの送信と貢献ワークフローの詳細については、「貢献」を参照してください。
Good first issue
というタグが付いた問題を見てみましょうgit clone https://github.com/jobrunr/jobrunr.git
cd jobrunr
cd core/src/main/resources/org/jobrunr/dashboard/frontend
npm i
npm run build
cd -
./gradlew publishToMavenLocal
その後、独自のプロジェクトでorg.jobrunr:jobrunr:1.0.0-SNAPSHOT
に依存できます。