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 인스턴스 내의 클라우드(hello Kubernetes)에서 실행하는 통합 프로그래밍 모델을 제공합니다.
JobRunr를 만들어 주셔서 감사합니다. 정말 마음에 듭니다! 그 전에는 Ruby와 Golang에서 비슷한 라이브러리를 사용했는데 지금까지 JobRunr가 사용하기 가장 즐거운 라이브러리였습니다. 특히 대시보드가 마음에 듭니다. 정말 멋집니다! 알렉스 데니소프
jobrunr.io에서 더 많은 피드백을 확인하세요.
이것이 적합할 수 있는 일부 시나리오는 다음과 같습니다.
웹 앱 내에서 소규모로 시작하여 작업을 처리하거나 수평으로 확장하고 최대 작업을 처리하려는 만큼 백그라운드 작업 서버를 추가할 수 있습니다. JobRunr는 모든 서버에 부하를 분산시킵니다. JobRunr는 내결함성도 갖추고 있습니다. 외부 웹 서비스가 다운되었습니까? 걱정하지 마세요. 스마트 백오프 정책을 통해 작업이 자동으로 10회 재시도됩니다.
JobRunr는 HangFire, Resque, Sidekiq, Delayed_job, Celery에 대한 Java 대안이며 Quartz 및 Spring Task Scheduler와 유사합니다.
실행 후 잊어버리는 작업
전용 작업자 풀 스레드는 대기 중인 백그라운드 작업을 가능한 한 빨리 실행하여 요청 처리 시간을 단축합니다.
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 ());
웹 애플리케이션 내에서 백그라운드 작업을 처리합니다…
모든 웹 애플리케이션에서 백그라운드 작업을 처리할 수 있으며 Spring에 대한 철저한 지원을 제공합니다. JobRunr는 웹 애플리케이션 내에서 백그라운드 작업을 처리하는 데 안정적입니다.
… 아니면 다른 곳에서도
도커 컨테이너에 싸여 영원히 계속 실행되고 새로운 백그라운드 작업을 폴링하는 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 ();
}
}
패치 제출 및 기여 워크플로우에 대한 자세한 내용은 CONTRIBUTING을 참조하세요.
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
사용할 수 있습니다.