BackgroundJob . enqueue (() -> System . out . println ( "This is all you need for distributed jobs!" ));
Una forma increíblemente sencilla de realizar trabajos de tipo "activar y olvidar" , retrasados , programados y recurrentes dentro de aplicaciones Java utilizando únicamente Java 8 lambda . Se admiten trabajos de CPU y E/S intensivos, de larga y corta duración. El almacenamiento persistente se realiza a través de RDBMS (por ejemplo, Postgres, MariaDB/MySQL, Oracle, SQL Server, DB2 y SQLite) o NoSQL (ElasticSearch, MongoDB y Redis).
JobRunr proporciona un modelo de programación unificado para manejar tareas en segundo plano de manera confiable y las ejecuta en alojamiento compartido, alojamiento dedicado o en la nube (hola Kubernetes) dentro de una instancia de JVM.
Gracias por crear JobRunr, ¡me gusta mucho! Antes de eso usé bibliotecas similares en Ruby y Golang y JobRunr hasta ahora es la más agradable de usar. Me gusta especialmente el tablero, ¡es increíble! Alex Denisov
Vea más comentarios en jobrunr.io.
Algunos escenarios en los que puede ser una buena opción:
Puede iniciar trabajos pequeños y procesarlos dentro de su aplicación web o escalar horizontalmente y agregar tantos servidores de trabajos en segundo plano como desee para manejar un pico de trabajos. JobRunr distribuirá la carga entre todos los servidores por usted. JobRunr también es tolerante a fallos: ¿hay algún servicio web externo inactivo? No se preocupe, el trabajo se reintenta automáticamente 10 veces con una política de retroceso inteligente.
JobRunr es una alternativa Java a HangFire, Resque, Sidekiq, delay_job, Celery y es similar a Quartz y Spring Task Scheduler.
Tareas de disparar y olvidar
Los subprocesos del grupo de trabajadores dedicados ejecutan trabajos en segundo plano en cola lo antes posible, lo que acorta el tiempo de procesamiento de su solicitud.
BackgroundJob . enqueue (() -> System . out . println ( "Simple!" ));
Tareas retrasadas
Los trabajos en segundo plano programados se ejecutan solo después de un período de tiempo determinado.
BackgroundJob . schedule ( Instant . now (). plusHours ( 5 ), () -> System . out . println ( "Reliable!" ));
Tareas recurrentes
Los trabajos recurrentes nunca han sido más sencillos; simplemente llame al siguiente método para realizar cualquier tipo de tarea recurrente utilizando las expresiones CRON.
BackgroundJob . scheduleRecurrently ( "my-recurring-job" , Cron . daily (), () -> service . doWork ());
Procesar tareas en segundo plano dentro de una aplicación web...
Puede procesar tareas en segundo plano en cualquier aplicación web y contamos con soporte completo para Spring: JobRunr es confiable para procesar sus trabajos en segundo plano dentro de una aplicación web.
… o en cualquier otro lugar
Como una aplicación de consola Spring, envuelta en un contenedor acoplable, que sigue ejecutándose para siempre y busca nuevos trabajos en segundo plano.
Consulte https://www.jobrunr.io para obtener más información.
JobRunr está disponible en Maven Central; todo lo que necesita hacer es agregar la siguiente dependencia:
< dependency >
< groupId >org.jobrunr</ groupId >
< artifactId >jobrunr</ artifactId >
< version >${jobrunr.version}</ version >
</ dependency >
Simplemente agregue la dependencia a JobRunr:
implementation ' org.jobrunr:jobrunr:${jobrunr.version} '
¡Agregue jobrunr-spring-boot-3-starter a sus dependencias y estará casi listo para comenzar! Simplemente configure su 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 javax.sql.DataSource
y coloque el siguiente código al inicio:
@ 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 CONTRIBUCIÓN para obtener detalles sobre cómo enviar parches y el flujo de trabajo de contribución.
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
Luego, en su propio proyecto puede confiar en org.jobrunr:jobrunr:1.0.0-SNAPSHOT
.