Hé! A fészer zárolóként arra törekszem, hogy megosszam veled, hogyan kell használni a Shed Lock -ot a Java 11 -rel. A Shed Lock egy fantasztikus eszköz, amely segít az elosztott zárak kezelésében a Java alkalmazásban. Nagyon hasznos, ha több példányt futtat az alkalmazás futtatásáról, és meg kell győződnie arról, hogy bizonyos feladatokat egyszerre csak egy példány hajtja végre.
Mi az a fészer zár?
Mielőtt belemerülnénk a Hogyan belemerülnénk - gyorsan beszéljünk arról, hogy mi a fészer zár. A Shed Lock egy Java könyvtár, amely egyszerű módszert kínál az elosztott zárak végrehajtására. Támogatja a különféle tárolási mechanizmusokat, mint például a JDBC, a REDIS, a MongoDB stb.
A projekt beállítása
Először is be kell állítania a Java 11 projektet. Ha Maven -t használ, adja hozzá a fészer zárfüggőségeitpom.xml- Íme egy példa a JDBC megvalósításának hozzáadására:
<függőség> <csoportos> net.javacrumbs.shedlock </groupID> <stifactId> Shedlock-szolgáltató-JDBC-Template </ArtifactId> <Version> 4.42.0 </version> </függőség> <ffeTency> <GroupId> net.javacrumbs.shedlock </artifactId> shedlock-spring spring> <verzió> 4.42.0 </verser> </ffeency>
Ha Gradle -t használ, adja hozzá ezeket a sorokatbuild.gradle:
megvalósítás 'net.javacrumbs.shedlock: Shedlock-for-for-jdbc-Template: 4.42.0' megvalósítás 'net.javacrumbs.shedlock: Shedlock-Spring: 4.42.0'
A zár szolgáltató konfigurálása
Miután hozzáadta a függőségeket, konfigurálnia kell a zár szolgáltatót. Tegyük fel, hogy JDBC adatbázist használunk. Létrehoznia kell aLockProviderBean a tavaszi konfigurációban.
Import net.javacrumbs.shedlock.core.lockprovider; Import net.javacrumbs.shedlock.provider.jdbctemplate.jdbctemplateLockProvider; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import org.springframework.jdbc.core.jdbctemplate; Import javax.sql.dataSource; @Configuration nyilvános osztály ShedlockConfig {@Bean Public LockProvider LockProvider (Datasource Datasource) {return új jdbctemplatelockProvider (jdbctemplateLockProvider.configuration.builder () .withjdbctemplate.). ); }}
Ez a kód létrehozza aLockProviderBean, amely a JDBC sablont használja az adatbázissal való kölcsönhatáshoz. Ahasználja a dbtime () használatátA módszer azt mondja, hogy a Shed Lock használja az adatbázis időtartamának a zárkezelés használatát.
A fészer zár használata a szolgáltatásában
Most, hogy a konfiguráció elkészült, lássuk, hogyan kell használni a szolgáltatásban lévő Shed Lock -ot. Tegyük fel, hogy van egy szolgáltatási módszere, amelyet rögzíteni szeretne. Használhatja a@SchedulerlockA fészer zár által biztosított kommentár.
Import net.javacrumbs.shedlock.spring.annotation.schedulerlock; import org.springframework.scheduling.annotation.scheduled; import org.springframework.stereotype.service; @Service nyilvános osztály myservice {@sceduled (fixrate = 60000) @schedulerlock (name = "mytasklock", l fatmestfor = "59s", locklateastfor = "30s") public void myTask () {// a feladat logikája a System.out.out.Println ("futás közben ..."); }}
Ebben a példában a@SkeduledA kommentár amyTask ()Módszer 60 másodpercenként futtasson. A@SchedulerlockA kommentár biztosítja, hogy az alkalmazás csak egy példánya képes végrehajtani ezt a módszert egyszerre. AnévAz attribútum egyedülálló azonosítója a zárhoz. ACurl -postforAttribútum meghatározza a zárolás maximális időtartamát, és aLezáróAttribútum Megadja a zárolási időtartamot.
Különböző zár szolgáltatók
Mint már korábban említettem, a Shed Lock támogatja a különböző zár szolgáltatókat. Vessen egy pillantást arra, hogy a Redis -t zárolóként használjuk.
Először adja hozzá a Redis -függőséget a projektjéhez. Ha Maven -t használ:
<függőség> <groupId> net.javacrumbs.shedlock </groupID> <stifactId> Shedlock-szolgáltató-Redis-Spring </rtifactId> <verzió> 4.42.0 </version> </feptency>
És Gradle számára:
Végrehajtás 'net.javacrumbs.shedlock: Shedlock-szolgáltató-Redis-Spring: 4.42.0'
Ezután konfigurálja a Redis Lock szolgáltatót a tavaszi konfigurációban:
Import net.javacrumbs.shedlock.core.lockprovider; Import net.javacrumbs.shedlock.provider.redis.spring.redislockProvider; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; import org.springframework.data.redis.connection.redisconnectionFactory; @Configuration nyilvános osztályú RedisshedLockConfig {@Bean Public LockProvider LockProvider (RedIsconnectionFactory redisConnectionFactory) {return új RedislockProvider (redisconnectionFactory); }}
Ezután ugyanezt használhatja@SchedulerlockA szolgáltatási módszerek és a fészerzár kommentárja a redist használja a zárak kezelésére.
Hibaelhárítás
Előfordulhat, hogy a dolgok nem mennek a tervek szerint. Ha problémái vannak a fészerzárral, íme néhány gyakori probléma és megoldás.
- A zár nem szabadul fel: Ellenőrizze a
Curl -postforattribútum. Ha túl hosszú be van állítva, akkor a zár nem szabad időben felszabadulni. Azt is ellenőrizheti, hogy vannak -e kivételek a kódban, amelyek megakadályozzák a zár megfelelő megjelenését. - Több példány, amely végrehajtja a zárolt feladatot: Győződjön meg arról, hogy minden példány ugyanazt a zár szolgáltatót és a konfigurációt használja. Ellenőrizze továbbá, hogy az adatbázis vagy az REDIS szerver elérhető -e minden példányból.
Más típusú zárakat kínálunk
Nem csak a zárkákról szólunk. Különféle egyéb zárakat is kínálunk, amelyek hasznosak lehetnek a különböző alkalmazásokhoz. Például nézd meg a miOldalsó ajtózár, amely tökéletes az oldalsó ajtók rögzítéséhez. A miénkÖnzáró ajtóNagyszerű lehetőség, ha olyan ajtót szeretne, amely automatikusan rögzül. És ha meg kell biztosítania a raktárat, a miRaktárzárCsak az, amire szüksége van.
Következtetés
A Shed Lock használata a Java 11 -rel nagyszerű módja annak, hogy az alkalmazásban az elosztott zárak kezelésére szolgáljon. Könnyű beállítani, és sok rugalmasságot biztosít a különböző zár szolgáltatókkal. Függetlenül attól, hogy JDBC -t, REDIS -t vagy más támogatott tárolási mechanizmust használ, a Shed Lock fedezte magát.
Ha érdekli, hogy megvásárolja a fészer zárjainkat vagy bármelyik többi zárolási megoldást, szeretnénk beszélgetni veled. Keresse meg velünk a beszerzési vitát, és keresse meg az Ön igényeinek legjobb zárolási megoldását.
Referenciák
- Fészer zárja a hivatalos dokumentációt
- Tavaszi keretrendszeri dokumentáció
