Tehnologija se nenehno spreminja iz dneva v dan. Včasih moramo na strežniku redno izvajati opravilo. Ročno izvajanje opravila na strežniku je težka naloga, zato je uporabnik ali skrbnik ne more izvesti večkrat. Da bi rešili to težavo, Cron programerju pomaga pri občasnem izvajanju opravil na strežniku. Široko se uporablja za avtomatizirano vzdrževanje in občudovanje sistema. Poleg tega lahko uporabimo tudi Cron izraz v spletnem razvoju. Obstaja veliko situacij, ko mora spletna aplikacija občasno izvajati določeno nalogo.
V tem razdelku bomo razpravljali o Java Cron izrazi , deluje in izvaja skozi Razporejevalnik Java Quartz .
Kaj je Cron?
V bistvu je Cron pripomoček, ki načrtuje opravilo. Uporabniku omogoča, da redno načrtuje opravilo ob določenem času, datumu, mesecu, šibkem in letu. Široko se uporablja v avtomatiziranih procesih, kjer ni potreben človeški poseg.
primerjava nizov c#
Cron izraz
V Javi se izrazi Cron uporabljajo za konfiguriranje primerkov CronTrigger razred. Je podrazred org.quartz.Trigger razred. Cron izraz je niz ali izraz, sestavljen iz šestih ali sedmih polj (časovna enota). Opisuje posamezne podrobnosti urnika in ukaza.
Izraz cron je lahko preprost in zapleten. na primer
Enostavno: * * * * ? * (zvezdica označuje polja)
Kompleks: 0 0/4 12,15,3-35,52 ? maj, junij, julij TOR-SO 2002-2010.
Upoštevajte tudi, da je izraz Cron mogoče zapisati v različnih slogih, kot sledi. Na primer, naslednji trije izrazi Cron imajo enak pomen.
- 0 10 9 ? * *
- 0 10 9 * * ?
- 0 10 9 * * ? *
Vse tri izraze izvedite vsak dan ob 9.10.
Polja, uporabljena v izrazu Cron
V izrazih Cron je časovna enota znana kot polje . Ti so ločeni s presledkom in lahko vsebujejo katero koli od dovoljenih vrednosti z različnimi kombinacijami dovoljenih znakov za to polje. Prikazuje polja v pričakovanem vrstnem redu. Naslednja tabela prikazuje časovno enoto in ustrezne vrednosti ter simbole, ki jih je mogoče uporabiti z izrazi.
Ime polja | Obvezno | Dovoljene vrednosti | Dovoljeni posebni znaki in simboli s polji |
---|---|---|---|
sekund | ja | 0-59 | , - * / |
minute | ja | 0-59 | , - * / |
Ure | ja | 0-23 | , - * / |
Dan v mesecu | ja | -31 | , - * ? / D Š C |
mesec | ja | 0-11 ali JAN-DEC | , - * / |
Dan v tednu | ja | 1-7 ali NED-SO | , - * ? / L C # |
leto | Neobvezno | prazen ali 1970-2099 | , - * / |
Posebni simboli in črke, uporabljeni v izrazu Cron
Zvezdica (*): Simbol uporabljamo, ko želimo izvesti dogodek ob vsaki časovni enoti (minuta, sekunda, ura). Na primer, če se * uporablja z minutno časovno enoto, to pomeni, da se bo dogodek samodejno izvedel vsako minuto.
Vprašaj (?): Simbol se uporablja v poljih, kot sta dan v mesecu in dan v tednu. Označuje poljubno vrednost in ignorira vrednost polj. Recimo, da želimo izvesti skript 2. v mesecu, ne da bi nas zanimalo, kateri dan v tednu je na 2. dan v mesecu. V tem primeru bi morali določiti simbol vprašaja ( ?) v polju dan v tednu.
Vezaj (-): Simbol se uporablja za določanje obsega. Določa obseg vrednosti. Na primer, če je polje ure definirano kot , pomeni, da se bo dogodek izvedel ob 4. in 5. uri.
Vejica (,): Uporablja se za določanje vrednosti polj, ločenih z vejico. Na primer pet, sob, ned itd.
Poševnica (/): Uporablja se za povečanje vrednosti določene časovne enote. Recimo, da želimo začeti dogodek pri 10 minutah, potem pa moramo isti dogodek izvesti pri 20 minutah, naslednjo izvedbo pri 30 minutah itd. V tem primeru določimo začetni čas in inkrementalno vrednost, ločeno s poševnico.
Na primer, če 10/10 v podanem v polju minut pomeni, da se prvi dogodek izvede ob 10 minutah, naslednja izvedba pa bo ob 20 minutah ure, in tako št.
L (zadnji): Uporaba črke L ima pri različnih poljih različen pomen.
- Če je bil uporabljen v polje, označuje zadnji dan v mesecu po koledarju.
- Če je bil uporabljen z vrednostjo odmika, kot je L-5 . Označuje 5thdo zadnjega dne koledarskega meseca.
- Če je bil uporabljen v polje, označuje zadnji dan v tednu. Lahko se uporablja tudi z drugo vrednostjo v polju. na primer 7L označuje prejšnjo soboto .
IN: Kasneje predstavljajo delavnike (od ponedeljka do petka). Določa dan v tednu, ki je najbližji določenemu dnevu v mesecu.
Na primer, če določimo 5W v polju za dan v mesecu pomeni w določitev dneva v tednu blizu 5thv mesecu.
- Če 5thmeseca je sobota , se bo sprožil dogodek 9th v mesecu.
- Če 5thmeseca je nedelja , se bo sprožil dogodek enajstth v mesecu.
Morda obstaja še kak drug primer. Recimo , 1stv mesecu je sobota, dogodek se bo zgodil 3rdv mesecu. To pomeni, da se dogodek ali skript ne bo izvedel v prejšnjem mesecu.
Hash (#): Predstavlja n-to ponovitev dneva v tednu v mesecu. Na primer, tretji petek v mesecu je lahko označen kot 6#3 .
Zakaj bi morali uporabljati cron izraze?
Obstaja več razlogov za uporabo cron izrazov. Nekateri izmed njih so:
- V določenem intervalu lahko potečemo in izbrišemo predpomnjene podatkovne datoteke.
- Načrtujemo lahko dnevne novice in e-pošto.
- Dolgotrajne naloge lahko razporedimo tako, da se izvajajo iz skripta ukazne vrstice, namesto da bi jih izvajali iz spletnega skripta. Na primer kodiranje videoposnetkov ali množično pošiljanje e-pošte.
Primer Cron izrazov
Oglejmo si nekaj pogostih izrazov Cron, ki uporabljajo posebne simbole in polja.
Cron izraz | Pomen izrazov Cron |
---|---|
0 12 * * ? | Označuje, da se bo opravilo izvajalo vsak dan ob 12.00 (opoldan). |
0/5 13,18 * * ? | Označuje, da se bo opravilo izvajalo vsakih pet minut z začetkom ob 13.00 in koncem ob 13.55 ter nato z začetkom ob 18.00 in koncem ob 18.55 vsak dan. |
0-5 13 * * ? | Označuje, da se bo opravilo izvajalo vsako minuto z začetkom ob 13.00 in koncem ob 13.05 vsak dan. |
15,45 13 ? 6 tor | Označuje, da se bo opravilo izvajalo ob 13.15 in 13.45 vsak torek v mesecu juniju. |
30 9? * PON-PET | Označuje, da se bo opravilo izvajalo ob 9.30 vsak ponedeljek, torek, sredo, četrtek in petek. |
30 9 15 * ? | Označuje, da bo opravilo izvedeno ob 9.30 zjutraj 15. dne v mesecu. |
0 18 L * ? | Označuje, da bo opravilo izvedeno ob 18. uri na zadnji dan vsakega meseca. |
0 18 L-3 * ? | Označuje, da bo opravilo izvedeno ob 18. uri tretjega do zadnjega dne v mesecu. |
30 10 ? *5L | Označuje, da bo opravilo izvedeno ob 10.30 zadnji četrtek v mesecu. |
0 10 ? * 23 | Označuje, da bo opravilo izvedeno ob 10. uri vsak tretji ponedeljek v mesecu. |
0 0 10/5 * ? | Označuje, da se bo opravilo izvajalo ob 12. polnoči vsak dan pet dni z začetkom na 10. dan v mesecu. |
0 11 11 11 11 ? | Označuje, da se bo opravilo izvajalo vsakega 11. novembra ob 11.11 |
0 15 10 ? * 6L 2002-2005 | Požar ob 10.15 vsak zadnji petek v mesecu v letih 2002, 2003, 2004 in 2005. |
0 0 0 ? * MOJ #1 | Označuje, da bo opravilo izvedeno prvi ponedeljek v mesecu ob polnoči. |
0 0 0 LW * * | Označuje, da se bo opravilo izvedlo zadnji dan v tednu v mesecu ob polnoči. |
0 0/30 8-10 * * * | Označuje, da se bo opravilo izvajalo vsak dan ob 8:00, 8:30, 9:00, 9:30, 10:00 in 10:30. |
Posebna nastavitev v izrazih Cron
Poleg zgornjega posebnega simbola Cron izraz podpira tudi nekatere vnaprej določene posebne vrednosti. Te vrednosti lahko uporabite namesto polj.
Uporaba izraza Cron v Javi
Java ponuja odprtokodni sistem za razporejanje opravil, ki načrtuje opravilo za določeno časovno enoto. Quartz scheduler lahko prenesemo z uradne strani.
pande iterrows
Z vidika programiranja je delo razred, ki vsebuje nalogo, ki jo je treba izvesti. Toda vprašanje je, kako to razporediti. Za načrtovanje opravila definiramo sprožilec in določimo, kdaj se bo opravilo izvršilo.
Če želimo implementirati razporejevalnik Quartz, lahko dodamo odvisnost, kot sledi:
org.quartz-scheduler quartz 2.2.1
Opomba: Pred izvajanjem naslednjega programa Java se prepričajte, da ste dodali quartz-2.2.1.jar datoteko na poti, sicer boste prejeli napako.
Oglejmo si izvedbo cron izraza in opravila prek programa Java.
Korak 1: Ustvarite projekt Maven. Ustvarili smo z imenom CronExample .
2. korak: Znotraj projekta ustvarite dva paketa in sicer com.javatpoint.app in com.javatpoint.job . V prvem paketu bomo določili glavni razred, v drugem paketu pa opravila (v našem primeru je število opravil pet).
3. korak: V datoteko pom.xml prilepite naslednjo odvisnost. Samodejno prenese potrebne datoteke JAR za projekt. Datoteka pom izgleda takole:
4.0.0 com.javacodegeeks.snippets.enterprise quartzexample 0.0.1-SNAPSHOT org.quartz-scheduler quartz 2.2.1
4. korak: Ustvarite pet opravil (v paketu com.javatpoint.job), ki jih želite izvesti. V našem primeru smo opredelili naslednjih pet delovnih mest.
Job1.java
package com.javatpoint.job; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class Job1 implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println('Job1 --->>> Hello user! Time is ' + new Date()); } }
Job2.java
package com.javatpoint.job; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class Job2 implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println('Job2 --->>> Hello user! Time is ' + new Date()); } }
Job3.java
package com.javatpoint.job; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class Job3 implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println('Job3 --->>> Hello user! Time is ' + new Date()); } }
Job4.java
package com.javatpoint.job; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class Job4 implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println('Job4 --->>> Hello user! Time is ' + new Date()); } }
Job5.java
package com.javatpoint.job; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class Job5 implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println('Job5 --->>> Hello user! Time is ' + new Date()); } }
5. korak: Ustvarite glavni razred z imenom MyApp.
MyApp.java
preklopni stavek java
package com.javatpoint.app; import org.quartz.CronExpression; import org.quartz.CronScheduleBuilder; import org.quartz.JobBuilder; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.impl.StdSchedulerFactory; import com.javatpoint.job.Job1; import com.javatpoint.job.Job2; import com.javatpoint.job.Job3; import com.javatpoint.job.Job4; import com.javatpoint.job.Job5; public class MyApp { public static void main(String args[]) { try { JobDetail job1 = JobBuilder.newJob(Job1.class) .withIdentity('job1', 'group1').build(); Trigger trigger1 = TriggerBuilder.newTrigger() .withIdentity('cronTrigger1', 'group1') .withSchedule(CronScheduleBuilder.cronSchedule('0/5 * * * * ?')) .build(); Scheduler scheduler1 = new StdSchedulerFactory().getScheduler(); scheduler1.start(); scheduler1.scheduleJob(job1, trigger1); JobDetail job2 = JobBuilder.newJob(Job2.class) .withIdentity('job2', 'group2').build(); Trigger trigger2 = TriggerBuilder.newTrigger() .withIdentity('cronTrigger2', 'group2') .withSchedule(CronScheduleBuilder.cronSchedule(new CronExpression('0/7 * * * * ?'))) .build(); Scheduler scheduler2 = new StdSchedulerFactory().getScheduler(); scheduler2.start(); scheduler2.scheduleJob(job2, trigger2); JobDetail job3 = JobBuilder.newJob(Job3.class) .withIdentity('job3', 'group3').build(); Trigger trigger3 = TriggerBuilder.newTrigger() .withIdentity('cronTrigger3', 'group3') .withSchedule(CronScheduleBuilder.dailyAtHourAndMinute(13, 46)) .build(); Scheduler scheduler3 = new StdSchedulerFactory().getScheduler(); scheduler3.start(); scheduler3.scheduleJob(job3, trigger3); JobDetail job4 = JobBuilder.newJob(Job4.class) .withIdentity('job4', 'group4').build(); Trigger trigger4 = TriggerBuilder.newTrigger() .withIdentity('cronTrigger4', 'group4') .withSchedule(CronScheduleBuilder.weeklyOnDayAndHourAndMinute(3, 13, 46)) .build(); Scheduler scheduler4 = new StdSchedulerFactory().getScheduler(); scheduler4.start(); scheduler4.scheduleJob(job4, trigger4); JobDetail job5 = JobBuilder.newJob(Job5.class) .withIdentity('job5', 'group5').build(); Trigger trigger5 = TriggerBuilder .newTrigger().withIdentity('cronTrigger5', 'group5') .withSchedule(CronScheduleBuilder.monthlyOnDayAndHourAndMinute(28, 13, 46)) .build(); Scheduler scheduler5 = new StdSchedulerFactory().getScheduler(); scheduler5.start(); scheduler5.scheduleJob(job5, trigger5); Thread.sleep(100000); scheduler1.shutdown(); scheduler2.shutdown(); scheduler3.shutdown(); scheduler4.shutdown(); scheduler5.shutdown(); } catch (Exception e) { e.printStackTrace(); } } }
Ko končamo z vsemi zgornjimi koraki, je projektni imenik videti takole:
6. korak: Za ogled izhoda zaženite zgornji program Java.
Opažamo, da se vsako delo izvaja v določenem časovnem intervalu.