Kako koristiti Shed Lock s kvarcnim planerom?

Jun 23, 2025

Ostavite poruku

Michael Yang
Michael Yang
Izvršni sam direktor tvrtke Hunan Lianhu Hardware Co., vodeći tvrtku na nova tržišta, zadržavajući naše temeljne vrijednosti inovacija i kvalitete. Uzbudljivo je vrijeme biti dio ove rastuće organizacije!

Hej tamo! Kao dobavljač prolivenih brava, super sam vas prošetao kroz kako koristiti Shed Lock s kvarcnim planerom. Bit će to divlja vožnja, ali na kraju toga bit ćete profesionalac u integriranju ova dva moćna alata.

Prvo, razgovarajmo o onome što su Shed Lock i Quartz Scheduler. Quartz Scheduler prilično je dobro - poznata biblioteka za raspoređivanje poslova otvorenog izvora u svijetu Java. Omogućuje vam zakazivanje radnih mjesta u određenim intervalima, poput pokretanja sigurnosne kopije podataka svake večeri u 2 sata ujutro ili slanja biltena svakog petka. S druge strane, Shed Lock je knjižnica koja vam pomaže u rukovanju distribuiranim bravama. U distribuiranom sustavu možda ćete imati više slučajeva rada vaše aplikacije i morate biti sigurni da se određeni posao ne radi istovremeno na različitim instancama. Tu dolazi SLED LOCK.

Zašto ih kombinirati?

Možda se pitate: "Zašto trebam koristiti Shed Lock s kvarcnim planerom?" Pa, u distribuiranom okruženju, ako imate Quartz Scheduler koji radi na više instanci, isti posao može istovremeno zapaliti na sve njih. To može dovesti do čitave gomile problema, poput nedosljednosti podataka ili resursa zbog korištenja. Shed Lock rješava ovaj problem osiguravajući da se samo jedan instanca posla može izvoditi u vrijeme u svim vašim instancama aplikacije.

Postavljanje okoliša

Prije nego što počnemo integrirati Shed Lock s Quartz Schedulerom, moramo postaviti naš projekt. Ako koristite Maven, morat ćete dodati potrebne ovisnosti u svojepom.xmldatoteka Evo kako bi to moglo izgledati:

<epseendency> <eroupId> net.javacrumbs.shedlock </roupId> <epcifactid> Shedlock-spring </ arcifactId> <verzija> 4.40.0 </ verzija> </ verzije> </osudrences> <Pembles> <Javacrumbs.ShedLocKlock> SHED-SHED-SHED-SHEDLOCKLOCK> <verzija> 4.40.0 </ verzija> </opsencency> <epseencency> <poinID> org.quartz-scheduler </pseadId> <irrtifactid> kvarc </ arcifactId> <verzija> 2.3.2 </ verzija> </epsundences>

Ako koristite Gradle, vašBuild.gradleDatoteka treba imati ove ovisnosti:

implementacija 'net.javacrumbs.shedlock: Shedlock-spring: 4.40.0' implementacija 'net.javacrumbs.shedlock: Shedlock-Provider-JDBC-Template: 4.40.0' implementacija 'org.quartz-scheduler: Quartz: 2.3.2'

Konfiguriranje prolivene brave

Jednom kada dodamo ovisnosti, moramo konfigurirati prolivenu bravu. Započet ćemo stvaranjem davatelja zaključavanja. Radi jednostavnosti, koristimo davatelja zaključavanja utemeljenog na JDBC -u. Evo kako to možete učiniti u Javi:

uvoz net.javacrumbs.shedlock.core.lockprovider; uvoz net.javacrumbs.shedlock.provider.jdbctemplate.jdbctemplatelockprovider; uvoz org.springframework.context.annotation.bean; uvoz org.springframework.context.annotation.configuration; uvoz org.springframework.jdbc.core.jdbctemplate; uvoz javax.sql.dataSource; @Configuration javna klasa ShedlockConfig {@Bean Public LockProvider LockProvider (DataSource DataSource) {vrati novi JdbcTemplatelockProvider (JdbcTEmplateLockProvider.configuration.Builder ().). }}

Ovaj kôd stvara aBackprovidergrah pomoću aJdbctemplateI osiguraniData izvora. UKorištenjedbTime ()Metoda osigurava da koristimo vrijeme baze podataka za upravljanje zaključavanjem.

Integriranje s kvarcnim planerom

Sada dolazi zabavni dio - integrirajući Shed Lock s kvarcnim planerom. Napravit ćemo jednostavan posao koristeći kvarc, a zatim koristite Shed Lock kako biste bili sigurni da radi samo jednom u svim instancama.

Prvo, stvorimo klasu kvarcnog posla:

uvoz org.quartz.job; uvoz org.quartz.jobexecutionContext; uvoz org.quartz.jobexecutionException; uvoz org.slf4j.logger; uvoz org.slf4j.loggerFactory; javna klasa myquartzjob implementira posao {privatni statički konačni zapisnik logger = loggerFactory.getlogger (myquartzjob.class); @Override public void execute (JobExecutionContext Context) baca JobExecutionException {logger.info ("myquartzjob se pokreće!"); // Vaša logika posla ide ovamo}}

Zatim ćemo zakazati ovaj posao koristeći kvarc i dodati ga Shed Lock. Koristit ćemo Spring's@ScheduledNapomena zajedno s Shed Lock -om@Schedulerlocknapomena.

Self Locking Door6-3

uvoz net.javacrumbs.shedlock.spring.annotation.schedulerlock; uvoz org.quartz.jobbuilder; uvoz org.quartz.jobdetail; uvoz org.quartz.scheduler; uvoz org.quartz.scheduleRexception; uvoz org.quartz.trigger; uvoz org.quartz.triggerbuilder; uvoz org.springframework.beans.factory.annotation.autowired; uvoz org.springframework.scheduling.annotation.scheduled; uvoz org.springframework.stereotipe.component; uvoz java.util.date; @Component javna klasa PlanedJobService {@AutoWired Private Scheduler Scheduler; @Scheduled (fixsRate = 60000) @schedulerlock (name = "myQuartzJoblock", LockAtSoNofor = "59s", lockatleastfor = "30s") javni nevaljani rasporedQuartzJob () baca Schedulerexception {JobDetail) (JobDobJob. .ITIDENTITY ("myquartzjob", "grupa1") .Build (); Okidač okidač = TRIGGERBUILDER.NewTrigger () .WithIdentity ("MyQuartzJobtrigger", "Group1") .Startat (novi datum ()) .Build (); planer.scheduleJob (JobDetail, okidač); }}

U ovom kodu,@ScheduledRaspored napomenarasporedQuartzjobMetoda za pokretanje svakih 60 sekundi. U@SchedulerlockNapomena osigurava da samo jedan instanca ovog posla može raditi istovremeno. Uimeatribut je naziv brave,Curl -post zaje maksimalno vrijeme koje se brava može održati iLocatleastforje minimalno vrijeme koje brava treba održati.

Ostala razmatranja

Postoji nekoliko drugih stvari koje biste trebali imati na umu kada koristite Shed Lock s kvarcnim planerom.

  • Prekid zaključavanja: Obavezno postavite odgovarajuće vrijednosti zaCurl -post zaiLocatleastfor. AkoCurl -post zapostavljen je prekratak, brava se može objaviti prije nego što posao završi, što dovodi do istodobnog izvršenja. Ako je postavljen predugo, može uzrokovati nepotrebna kašnjenja.
  • Rukovanje pogreškama: Trebali biste pravilno rukovanje pogreškama na mjestu i za kvarc i za prolivanje brave. Ako dođe do pogreške u stjecanju zaključavanja ili pokretanju posla, vaša bi aplikacija trebala biti graciozno.

Povezani proizvodi

Ako vas zanimaju druge vrste brava, imamo i neke sjajne mogućnosti. Provjerite našeDrvena brava vrata,,Kvartal zaključavanje, iVrata za samo zaključavanjeProizvodi. Oni su visoki - kvalitetni i savršeni za razne sigurnosne potrebe.

Kontakt za kupnju

Ako želite integrirati Shed Lock sa svojim Quartz Schedulerom ili zainteresiranim za bilo koji od naših drugih proizvoda za zaključavanje, voljeli bismo razgovarati. Obratite nam se kako bismo razgovarali o vašim zahtjevima i dobili ponudu. Naš tim stručnjaka spreman je pomoći u pronalaženju najboljih rješenja za vaše poslovanje.

Reference

  • Kvarcna službena dokumentacija
  • Službena dokumentacija prolivene zaključavanja

Dakle, to je to! Sada znate kako koristiti Shed Lock s kvarcnim planerom. U početku se može činiti pomalo složenim, ali s malo prakse moći ćete se nositi s raspoređenim rasporedom rasporeda posla poput šampiona.

Pošaljite upit