Ehilà! Come fornitore di serrature, sono entusiasta di condividere con te come utilizzare il blocco Shed con Java 11. Shed Lock è uno strumento fantastico che ti aiuta a gestire le serrature distribuite in un'applicazione Java. È super utile quando hai più istanze della tua app in esecuzione e devi assicurarti che determinate attività siano eseguite da una sola istanza alla volta.
Cos'è Shed Lock?
Prima di immergerci nel modo in cui - parliamo rapidamente di ciò che è Shed Lock. Shed Lock è una libreria Java che fornisce un modo semplice per implementare blocchi distribuiti. Supporta vari meccanismi di archiviazione come JDBC, Redis, MongoDB, ecc. Questa flessibilità lo rende un'ottima scelta per diversi tipi di progetti.
Impostazione del progetto
Per prima cosa, devi impostare il tuo progetto Java 11. Se stai usando Maven, aggiungi le dipendenze del blocco del capannone al tuopom.xml. Ecco un esempio di come aggiungere l'implementazione JDBC:
<Pesidency> <GoupId> net.javacrumbs.shedlock </uproupid> <artifactid> shedlock-provider-jdbc-template </tarifactId> <persion> 4.42.0 </version> </dipendenza> <PesidraceD> NET.javacrumbs.shedlock </groupid> <Spersion> 4.42.0 </versione> </dipendenza>
Se stai usando Gradle, aggiungi queste righe al tuobuild.gradle:
Implementazione 'net.javacrumbs.shedlock: shedlock-provider-jdbc-template: 4.42.0' Implementation 'net.javacrumbs.shedlock: Shedlock-Spring: 4.42.0'
Configurazione del provider di blocco
Dopo aver aggiunto le dipendenze, è necessario configurare il provider di blocco. Supponiamo che stiamo usando un database JDBC. Dovrai creare unLockProviderBean nella configurazione a molla.
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.jdbctmplate; import javax.sql.datasource; @Configuration Classe pubblica SheDlockConfig {@Bean LockProvider LockProvider (DataSource DataSource) {return new JDBCemplateLockProvider (JDBCTempLateLockProvider.Configation.Builder () .withJDBCemplate (New JDBTemplate (DataSource)) (); }}
Questo codice crea un fileLockProviderBean che utilizza il modello JDBC per interagire con il database. ILUsingDBtime ()Il metodo dice a Shed Lock di utilizzare il tempo del database per la gestione dei blocchi.
Utilizzo di Shed Lock nel tuo servizio
Ora che la configurazione è terminata, vediamo come utilizzare il blocco SHED nel tuo servizio. Supponiamo di avere un metodo di servizio che vuoi bloccare. Puoi usare il@SchedulerlockAnnotazione fornita da Shed Lock.
import net.javacrumbs.shedlock.spring.annotation.schedulerlock; Import org.springframework.scheduling.annotation.schedoled; Import org.springframework.stereotype.service; @Service Public Class myService {@Scheduled (FixOrate = 60000) @schedulerlock (name = "MyTaskLock", LockAtSolSfor = "59s", LockAtleastFor = "30S") public void myTask () {// La tua logica delle attività va qui System.out.println ("Esecuzione del mio compito ..."); }}
In questo esempio, il@ProgrammatoL'annotazione fa ilmytask ()Metodo eseguito ogni 60 secondi. IL@SchedulerlockL'annotazione garantisce che solo un'istanza dell'applicazione possa eseguire questo metodo alla volta. ILnomeL'attributo è un identificatore univoco per il blocco. ILCurl -PostforL'attributo specifica il tempo massimo del blocco può essere detenuto e ilLockatleastforL'attributo specifica il tempo minimo che il blocco dovrebbe essere detenuto.
Diversi fornitori di blocchi
Come accennato in precedenza, Shed Lock supporta diversi fornitori di blocchi. Diamo un'occhiata all'utilizzo di Redis come fornitore di blocchi.
Innanzitutto, aggiungi la dipendenza da Redis al tuo progetto. Se stai usando Maven:
<Pesidency> <GoupId> Net.javacrumbs.shedlock </uproupid> <artifactId> shedlock-provider-redis-spring </litrafactId> <versione> 4.42.0 </versione> </dipendenza>
E per gradle:
Implementazione 'net.javacrumbs.shedlock: shedlock-provider-redis-sping: 4.42.0'
Quindi, configurare il provider di blocco Redis nella configurazione della molla:
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 Public Class RedisshedlockConfig {@Bean LockProvider LockProvider (RedisconnectionFactory RedisconnectionFactory) {return new RedislockProvider (RedisconnectionFactory); }}
Puoi quindi usare lo stesso@SchedulerlockL'annotazione nei metodi di servizio e il blocco del capannone utilizzerà Redis per gestire le serrature.
Risoluzione dei problemi
A volte, le cose potrebbero non andare come previsto. Se hai problemi con Shed Lock, ecco alcuni problemi e soluzioni comuni.
- Lock non viene rilasciato: Controlla il
Curl -Postforattributo. Se è impostato troppo a lungo, il blocco potrebbe non essere rilasciato in modo tempestivo. Puoi anche verificare se ci sono delle eccezioni nel codice che impediscono il rilascio corretto il blocco. - Multiple istanze che eseguono l'attività bloccata: Assicurarsi che tutte le istanze utilizzino lo stesso provider di blocchi e la configurazione. Inoltre, controlla se il database o il server Redis sono accessibili da tutte le istanze.
Altri tipi di serrature che offriamo
Non ci stiamo solo per le serrature. Offriamo anche una varietà di altri blocchi che potrebbero essere utili per diverse applicazioni. Ad esempio, controlla il nostroSerratura porta laterale, che è perfetto per proteggere le porte laterali. NostroPorta di bloccaggio autonomoè un'ottima opzione se vuoi una porta che si blocca automaticamente. E se hai bisogno di proteggere un magazzino, il nostroLock di magazzinoè proprio quello di cui hai bisogno.
Conclusione
L'uso di Shed Lock con Java 11 è un ottimo modo per gestire i blocchi distribuiti nell'applicazione. È facile da configurare e offre molta flessibilità con diversi fornitori di blocchi. Che tu stia usando JDBC, Redis o un altro meccanismo di stoccaggio supportato, il blocco del capannone ti ha coperto.
Se sei interessato ad acquistare le nostre serrature o una delle nostre altre soluzioni di blocco, ci piacerebbe fare una chiacchierata con te. Contattaci per iniziare la discussione sugli appalti e trovare la migliore soluzione di bloccaggio per le tue esigenze.
Riferimenti
- Documentazione ufficiale di Lock Lock
- Documentazione del framework Spring
