U modernom razvoju softvera, istodobni pristup zajedničkim resursima može dovesti do različitih problema poput nedosljednosti podataka i uvjetima rase. Shed Lock je moćan alat koji pomaže programerima da učinkovito upravljaju tim problemima istodobnosti. Kao dobavljač proreznih brava, ovdje sam da vas vodim kako se integrirati i koristiti Shed Lock s aplikacijom za dizanje okvira.
Razumijevanje prolivene brave
Shed Lock je knjižnica koja pruža distribuirane brave za zakazane zadatke u Java aplikaciji. Osigurava da samo jedan instanca zakazanog zadatka radi istovremeno na više čvorova u distribuiranom sustavu. To je ključno kada se bavite zajedničkim resursima ili obavljanjem zadataka koje se ne trebaju izvršiti istovremeno.
Osnovni koncept koji stoji iza Shed Lock -a je jednostavan: koristi bazu podataka ili druge sustave za pohranu za upravljanje bravama. Kad zakaženi zadatak započne, pokušava steći bravu. Ako je brava dostupna, zadatak se nastavlja; Inače čeka ili preskače izvršenje.
Preduvjeti
Prije nego što počnemo integrirati Shed Lock s aplikacijom za dizanje okvira, obavezno imate sljedeće:
- Aplikacija za radno dizanje okvira. Ako ga nemate, možete stvoriti novi projekt dizanja pomoću SBT (jednostavni alat za izradu).
- Baza podataka koju podržava Shed Lock. Popularni izbori uključuju MySQL, PostgreSQL i H2.
- Osnovno znanje o java i okvirnim konceptima kao što su zakazani zadaci i pristup bazi podataka.
Korak 1: Dodajte ovisnosti o prolivenim bravama
Prvo, u svoj projekt dizanja morate dodati ovisnosti o prometu. Ako koristite SBT, dodajte sljedeće retke u svojeBuild.sbtdatoteka:
Knjižnice biblioteke ++ = SEQ ("net.javacrumbs.shedlock" % "Shedlock-spring" % "4,40,0", "net.javacrumbs.shedlock" % "Shedlock-Provider-JDBC-Template" % "4,40.0")
Ove ovisnosti uključuju biblioteku za zaključavanje jezgre i davatelja predloška JDBC, što nam omogućava korištenje relacijske baze podataka za upravljanje zaključavanjem.
Korak 2: Konfigurirajte bazu podataka
Zatim morate konfigurirati vezu svoje baze podataka. U aplikaciji za dizanje možete koristiti Lift's Built - u sustavu za upravljanje bazama podataka ili u trećoj biblioteci poput Spring JDBC -a.


Evo primjera konfiguriranja JDBC izvora podataka pomoću Spring Boot -aData izvoraKonfiguracija u aplikaciji za podizanje:
uvoz org.springframework.context.annotation.bean; uvoz org.springframework.context.annotation.configuration; uvoz org.springframework.jdbc.dataSource.DriverManagerDataSource; uvoz javax.sql.dataSource; @Configuration javna klasa DataBaseConfig {@Bean Public DataSource DataSource () {vozačManagerDataSource DataSource = novi upravljačManagerDataSource (); DataSource.SetDriverClassName ("com.mysql.cj.jdbc.driver"); DataSource.setUrl ("JDBC: mySQL: // localhost: 3306/your_database"); DataSource.SetUserName ("Your_username"); DataSource.SetPassword ("your_password"); Povratak podataka; }}
Ovaj kôd konfigurira MySQL izvor podataka. Morate zamijeniti URL, korisničko ime i lozinku sa stvarnim vjerodajnicama baze podataka.
Korak 3: Stvorite davatelja zaključavanja
Shed Lock koristi davatelja zaključavanja za upravljanje bravama. Za bazu podataka utemeljenu na JDBC -u možete stvoriti aJdbcTemplateLockProviderkako slijedi:
uvoz net.javacrumbs.shedlock.provider.jdbctemplate.jdbctemplatelockprovider; uvoz net.javacrumbs.shedlock.spring.annotation.enableschedulerlock; uvoz org.springframework.context.annotation.bean; uvoz org.springframework.context.annotation.configuration; uvoz org.springframework.jdbc.core.jdbctemplate; uvoz javax.sql.dataSource; @Configuration @EnablesChedulerlock (DefaultlockOstOstfor = "PT30S") javna klasa ShedlockConfig {@Bean Public JdbcTemplateLockProvider LockProvider (DataSource DataSource) {Povratak New JDBCTEMPlateLockProvider (JDBCTCPRaTPRaTPRatPRatPRateRilRateRuration. .WithJdbCtTemplate (novi JDBCTEMPlate (DataSource)) .usingdbtime () .Build ()); }}
A@EnablesChedulerlockNapomena omogućuje prolivanje zaključavanja u vašoj prijavi izadani blokatsAtributi postavlja maksimalno vrijeme koje se može održati brava.
Korak 4: Definirajte zakazane zadatke
U aplikaciji za podizanje možete definirati zakazane zadatke pomoću Lift'sSpredmet ili proljeće@Schedulednapomena. Evo primjera korištenja@ScheduledNapomena s lovcem:
uvoz net.javacrumbs.shedlock.spring.annotation.schedulerlock; uvoz org.springframework.scheduling.annotation.scheduled; uvoz org.springframework.stereotipe.component; @Component javna klasa Planiranetasks {@scheduled (fixsRate = 60000) @schedulerlock (name = "mysCheduledTask", lockAtOnfor = "pt10s", LocKatLeastfor = "pt5s") javno nevaljano myscheduded () zadatak {//pps. }}
A@SchedulerlockNapomena se koristi za određivanje naziva brave, maksimalno vrijeme koje se brava može održati (Curl -post za), i minimalno vrijeme kada se brava treba održati (Locatleastfor).
Korak 5: Pokrenite aplikaciju
Sada kada ste konfigurirali Shed Lock i definirali svoje zakazane zadatke, možete pokrenuti svoju aplikaciju za dizanje. Kad se aktivira zakazani zadatak, Shed Lock će pokušati nabaviti bravu. Ako je brava dostupna, zadatak će izvršiti; Inače će preskočiti izvršenje.
Napredna upotreba
- Višestruki zakazani zadaci: Možete definirati više zakazanih zadataka u svojoj aplikaciji, a svaki sa svojim zaključavanjem. Samo obavezno koristite različita imena zaključavanja za svaki zadatak.
- Rukovanje pogreškama: Možete dodati kod za rukovanje pogreškama u svoje zakazane zadatke za obradu slučajeva u kojima se brava ne može dobiti ili zadatak ne izvršava.
Dodatne vrste zaključavanja
Pored osnovne funkcionalnosti zaključavanja, postoje i druge vrste brava koje mogu biti korisne u različitim scenarijima. Na primjer,GuraMože se koristiti u situacijama u kojima vam je potreban jednostavan i brz mehanizam za zaključavanje.Vrata za samo zaključavanjeprikladno je za aplikacije u kojima su potrebna sigurnost i automatsko zaključavanje. IZaključavanje skladištaramože se koristiti za zaštitu prostora za skladištenje i osigurati da je dopušten samo ovlašteni pristup.
Zaključak
Integriranje brave s aplikacijom okvira za dizanje izravan je proces koji može značajno poboljšati pouzdanost i dosljednost vaših zakazanih zadataka. Slijedeći korake navedene u ovom vodiču, možete osigurati da vaša aplikacija radi glatko čak i u distribuiranom okruženju.
Ako ste zainteresirani za korištenje naših rješenja za zaključavanje za vaše aplikacije za dizanje okvira ili imate bilo kakvih pitanja o našim proizvodima, pozivamo vas da nas kontaktirate na detaljnu raspravu. Naš tim stručnjaka spreman vam je pomoći u pronalaženju najboljih rješenja za zaključavanje za vaše specifične potrebe.
Reference
- Službena dokumentacija prolivene zaključavanja.
- Službena dokumentacija dizanja Framework -a.
- Dokumentacija Spring Boot -a za JDBC i zakazivanje.
