BackgroundJob . enqueue (() -> System . out . println ( "This is all you need for distributed jobs!" ));
Maneira incrivelmente fácil de executar trabalhos do tipo disparar e esquecer , atrasados , agendados e recorrentes dentro de aplicativos Java usando apenas lambda do Java 8 . São suportados trabalhos intensivos de CPU e E/S, de longa e curta duração. O armazenamento persistente é feito via RDBMS (por exemplo, Postgres, MariaDB/MySQL, Oracle, SQL Server, DB2 e SQLite) ou NoSQL (ElasticSearch, MongoDB e Redis).
JobRunr fornece um modelo de programação unificado para lidar com tarefas em segundo plano de maneira confiável e executá-las em hospedagem compartilhada, hospedagem dedicada ou na nuvem (olá Kubernetes) dentro de uma instância JVM.
Obrigado por construir o JobRunr, gosto muito dele! Antes eu usava bibliotecas semelhantes em Ruby e Golang e JobRunr até agora é a mais agradável de usar. Gosto especialmente do painel, é incrível! Alex Denisov
Veja mais comentários em jobrunr.io.
Alguns cenários em que pode ser uma boa opção:
Você pode iniciar pequenos e processar trabalhos em seu aplicativo da web ou dimensionar horizontalmente e adicionar quantos servidores de trabalho em segundo plano desejar para lidar com um pico de trabalhos. JobRunr distribuirá a carga por todos os servidores para você. JobRunr também é tolerante a falhas - um serviço da Web externo está inativo? Não se preocupe, o trabalho é repetido automaticamente 10 vezes com uma política de retirada inteligente.
JobRunr é uma alternativa Java para HangFire, Resque, Sidekiq, atrasado_job, Celery e é semelhante ao Quartz e Spring Task Scheduler.
Tarefas do tipo disparar e esquecer
Threads de pool de trabalhadores dedicados executam trabalhos em segundo plano enfileirados o mais rápido possível, reduzindo o tempo de processamento da sua solicitação.
BackgroundJob . enqueue (() -> System . out . println ( "Simple!" ));
Tarefas atrasadas
Os trabalhos agendados em segundo plano são executados somente após um determinado período de tempo.
BackgroundJob . schedule ( Instant . now (). plusHours ( 5 ), () -> System . out . println ( "Reliable!" ));
Tarefas recorrentes
Trabalhos recorrentes nunca foram tão simples; basta chamar o método a seguir para realizar qualquer tipo de tarefa recorrente usando as expressões CRON.
BackgroundJob . scheduleRecurrently ( "my-recurring-job" , Cron . daily (), () -> service . doWork ());
Processar tarefas em segundo plano dentro de um aplicativo da web…
Você pode processar tarefas em segundo plano em qualquer aplicativo da web e temos suporte completo para Spring - JobRunr é confiável para processar seus trabalhos em segundo plano em um aplicativo da web.
… ou em qualquer outro lugar
Como um aplicativo Spring Console, embalado em um contêiner docker, que continua em execução para sempre e pesquisa novos trabalhos em segundo plano.
Consulte https://www.jobrunr.io para obter mais informações.
JobRunr está disponível no Maven Central - tudo que você precisa fazer é adicionar a seguinte dependência:
< dependency >
< groupId >org.jobrunr</ groupId >
< artifactId >jobrunr</ artifactId >
< version >${jobrunr.version}</ version >
</ dependency >
Basta adicionar a dependência ao JobRunr:
implementation ' org.jobrunr:jobrunr:${jobrunr.version} '
Adicione jobrunr-spring-boot-3-starter às suas dependências e você estará quase pronto para começar! Basta configurar seu 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
Defina um javax.sql.DataSource
e coloque o seguinte código na inicialização:
@ 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 ();
}
}
Consulte CONTRIBUINDO para obter detalhes sobre o envio de patches e o fluxo de trabalho de contribuição.
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
Então, em seu próprio projeto você pode depender de org.jobrunr:jobrunr:1.0.0-SNAPSHOT
.