BackgroundJob . enqueue (() -> System . out . println ( "This is all you need for distributed jobs!" ));
Un moyen incroyablement simple d'effectuer des tâches de type "fire-and-forget" , retardées , planifiées et récurrentes dans des applications Java en utilisant uniquement les lambda de Java 8 . Les tâches gourmandes en CPU et en E/S, de longue durée et de courte durée, sont prises en charge. Le stockage persistant s'effectue soit via un SGBDR (par exemple Postgres, MariaDB/MySQL, Oracle, SQL Server, DB2 et SQLite) ou NoSQL (ElasticSearch, MongoDB et Redis).
JobRunr fournit un modèle de programmation unifié pour gérer les tâches en arrière-plan de manière fiable et les exécute sur un hébergement partagé, un hébergement dédié ou dans le cloud (bonjour Kubernetes) au sein d'une instance JVM.
Merci d'avoir créé JobRunr, je l'aime beaucoup ! Avant cela, j'utilisais des bibliothèques similaires dans Ruby et Golang et JobRunr est jusqu'à présent la plus agréable à utiliser. J'aime particulièrement le tableau de bord, il est génial ! Alex Denissov
Consultez plus de commentaires sur jobrunr.io.
Quelques scénarios dans lesquels cela peut convenir :
Vous pouvez démarrer de petites tâches et traiter des tâches au sein de votre application Web ou évoluer horizontalement et ajouter autant de serveurs de tâches en arrière-plan que vous le souhaitez pour gérer un pic de tâches. JobRunr répartira la charge sur tous les serveurs pour vous. JobRunr est également tolérant aux pannes : un service Web externe est-il en panne ? Ne vous inquiétez pas, le travail est automatiquement réessayé 10 fois avec une politique d'attente intelligente.
JobRunr est une alternative Java à HangFire, Resque, Sidekiq, delay_job, Celery et est similaire à Quartz et Spring Task Scheduler.
Tâches de feu et d'oubli
Les threads du pool de tâches dédiés exécutent les tâches en arrière-plan mises en file d'attente dès que possible, réduisant ainsi le temps de traitement de votre demande.
BackgroundJob . enqueue (() -> System . out . println ( "Simple!" ));
Tâches retardées
Les tâches en arrière-plan planifiées ne sont exécutées qu'après un laps de temps donné.
BackgroundJob . schedule ( Instant . now (). plusHours ( 5 ), () -> System . out . println ( "Reliable!" ));
Tâches récurrentes
Les tâches récurrentes n'ont jamais été aussi simples ; appelez simplement la méthode suivante pour effectuer tout type de tâche récurrente à l'aide des expressions CRON.
BackgroundJob . scheduleRecurrently ( "my-recurring-job" , Cron . daily (), () -> service . doWork ());
Traiter les tâches en arrière-plan dans une application Web…
Vous pouvez traiter des tâches en arrière-plan dans n'importe quelle application Web et nous bénéficions d'un support complet pour Spring - JobRunr est fiable pour traiter vos tâches en arrière-plan dans une application Web.
… ou ailleurs
Comme une application console Spring, enveloppée dans un conteneur Docker, qui continue de s'exécuter pour toujours et recherche de nouvelles tâches en arrière-plan.
Voir https://www.jobrunr.io pour plus d'informations.
JobRunr est disponible dans Maven Central - tout ce que vous avez à faire est d'ajouter la dépendance suivante :
< dependency >
< groupId >org.jobrunr</ groupId >
< artifactId >jobrunr</ artifactId >
< version >${jobrunr.version}</ version >
</ dependency >
Ajoutez simplement la dépendance à JobRunr :
implementation ' org.jobrunr:jobrunr:${jobrunr.version} '
Ajoutez le jobrunr-spring-boot-3-starter à vos dépendances et vous êtes presque prêt à partir ! Configurez simplement votre 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
Définissez un javax.sql.DataSource
et mettez le code suivant au démarrage :
@ 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 ();
}
}
Voir CONTRIBUTION pour plus de détails sur la soumission de correctifs et le flux de travail de contribution.
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
Ensuite, dans votre propre projet, vous pouvez compter sur org.jobrunr:jobrunr:1.0.0-SNAPSHOT
.