¿Cómo usar el bloqueo de cobertizo con Java 11?

May 16, 2025

Dejar un mensaje

Tom Zhang
Tom Zhang
Soy el jefe de fabricación de Lianhu, supervisando los procesos de producción para garantizar la eficiencia y la sostenibilidad. Mi objetivo es mantener nuestra reputación de productos de hardware de alta calidad al tiempo que reduce el impacto ambiental.

¡Hola! Como proveedor de bloqueo de cobertizo, estoy entusiasmado por compartir con usted cómo usar el bloqueo de cobertizo con Java 11. El bloqueo de cobertizo es una herramienta increíble que le ayuda a manejar cerraduras distribuidas en una aplicación Java. Es muy útil cuando tiene múltiples instancias de su aplicación en ejecución y debe asegurarse de que ciertas tareas se ejecuten solo por una instancia a la vez.

¿Qué es el bloqueo de cobertizo?

Antes de sumergirnos en el cómo, a hablar rápidamente sobre qué es el bloqueo de cobertizo. Shed Lock es una biblioteca Java que proporciona una manera simple de implementar cerraduras distribuidas. Admite varios mecanismos de almacenamiento como JDBC, Redis, MongoDB, etc. Esta flexibilidad lo convierte en una excelente opción para diferentes tipos de proyectos.

Configuración del proyecto

Lo primero es lo primero, debe configurar su proyecto Java 11. Si está utilizando Maven, agregue las dependencias de bloqueo de cobertizo a supom.xml. Aquí hay un ejemplo de cómo agregar la implementación de JDBC:

<Spendency> <ProupId> net.javacrumbs.shedlock </groupid> <artifactid> shedlock-propider-jdbc-template </arfactid> <version> 4.42.0 </versión> </dependency> <pendency> <proupId> net.javacrumbs.shedlock </groupid> <artifactid> shedlock-spring </artidency> net.javacrumbs.shedlock </grupo) <Versión> 4.42.0 </versión> </pendency>

Si está usando Gradle, agregue estas líneas a suBuild.gradle:

Implementación 'net.javacrumbs.shedlock: shedlock-propider-jdbc-template: 4.42.0' implementación 'net.javacrumbs.shedlock: shedlock-spring: 4.42.0'

Configuración del proveedor de bloqueo

Una vez que haya agregado las dependencias, debe configurar el proveedor de bloqueo. Supongamos que estamos usando una base de datos JDBC. Tendrás que crear unMortajerofrijoles en su configuración de resorte.

7-3
importar net.javacrumbs.shedlock.core.lockprovider; importar net.javacrumbs.shedlock.provider.jdbctemplate.jdbctemplateLockProvider; importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; importar org.springframework.jdbc.core.jdbctemplate; import javax.sql.dataSource; @Configuration public class shedlockConfig {@Bean public LockProvider LockProvider (DataSource DataSource) {return new JDBCTEMPLATELOCKProvider (JDBCTEMPLATELOCKProvider.Configuration.Builder () .WitHJDBCTEPLATE (New JDBCTEMate (DataSource).).). }}

Este código crea unMortajeroBean que usa la plantilla JDBC para interactuar con la base de datos. Elusandodbtime ()El método le dice a Shed Lock que use el tiempo de la base de datos para la gestión de bloqueos.

7-2

Usar el bloqueo de cobertizo en su servicio

Ahora que la configuración está realizada, veamos cómo usar el bloqueo de cobertizo en su servicio. Supongamos que tiene un método de servicio que desea bloquear. Puedes usar el@SchedulerlockAnotación proporcionada por Shed Lock.

importar net.javacrumbs.shedlock.spring.annotation.schedulerlock; importar org.springframework.scheduling.annotation.scheduled; importar org.springframework.stereotype.service; @Service Public Class MyService {@scheduled (fijado = 60000) @schedulerlock (name = "myTasklock", LockatMostFor = "59s", LockatLeastfor = "30S") public void myTask () {// Su lógica de tareas va aquí System.out.println ("ejecutando mi tarea ...");; }}

En este ejemplo, el@ProgramadoLa anotación hace elmytask ()El método se ejecuta cada 60 segundos. El@SchedulerlockLa anotación asegura que solo una instancia de la aplicación pueda ejecutar este método a la vez. ElnombreEl atributo es un identificador único para el bloqueo. ElRizo -posteEl atributo especifica el tiempo máximo que se puede mantener el bloqueo y elLockatleastforEl atributo especifica el tiempo mínimo que se debe mantener el bloqueo.

Diferentes proveedores de cerraduras

Como mencioné anteriormente, el bloqueo de cobertizo es compatible con diferentes proveedores de bloqueos. Echemos un vistazo al uso de Redis como proveedor de cerraduras.

Primero, agregue la dependencia de Redis a su proyecto. Si estás usando Maven:

<Spendency> <ProupId> net.javacrumbs.shedlock </groupid> <artifactid> shedlock-propider-redis-spring </artifactid> <versión> 4.42.0 </versión> </pendency>

Y para graduarse:

Implementación 'net.javacrumbs.shedlock: shedlock-propider-redis-spring: 4.42.0'

Luego, configure el proveedor de bloqueo Redis en su configuración de Spring:

importar net.javacrumbs.shedlock.core.lockprovider; importar net.javacrumbs.shedlock.provider.redis.spring.redislockprovider; importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; importar org.springframework.data.redis.connection.redisconnectionFactory; @Configuration public class RedissHedlockConfig {@Bean publicProvider LockProvider (redisConnectionFactory redisConnectionFactory) {return new RedislockProvider (redisConnectionFactory); }}

Entonces puedes usar lo mismo@SchedulerlockLa anotación en sus métodos de servicio, y el bloqueo de cobertizo utilizará Redis para administrar las cerraduras.

8-3

Solución de problemas

A veces, las cosas pueden no ir según lo planeado. Si tiene problemas con el bloqueo de cobertizo, aquí hay algunos problemas y soluciones comunes.

  • Lock no siendo lanzado: Revise elRizo -posteatributo. Si se establece demasiado tiempo, la cerradura podría no ser lanzada de manera oportuna. También puede verificar si hay alguna excepción en su código que evite que el bloqueo se libere correctamente.
  • Múltiples instancias ejecutando la tarea bloqueada: Asegúrese de que todas las instancias estén utilizando el mismo proveedor y configuración de bloqueo. Además, verifique si se puede acceder a la base de datos o el servidor Redis desde todas las instancias.

Otros tipos de cerraduras que ofrecemos

No se trata solo de cerraduras de cobertizo. También ofrecemos una variedad de otras cerraduras que podrían ser útiles para diferentes aplicaciones. Por ejemplo, mira nuestroCerradura de puerta lateral, que es perfecto para asegurar las puertas laterales. NuestroPuerta de bloqueoes una excelente opción si desea una puerta que se bloquee automáticamente. Y si necesita asegurar un almacén, nuestroBloqueoes justo lo que necesitas.

Conclusión

Usar el bloqueo de cobertizo con Java 11 es una excelente manera de administrar cerraduras distribuidas en su aplicación. Es fácil de configurar y proporciona mucha flexibilidad con diferentes proveedores de bloqueos. Ya sea que esté utilizando JDBC, Redis u otro mecanismo de almacenamiento compatible, Shed Lock lo tiene cubierto.

Si está interesado en comprar nuestras cerraduras de cobertizo o cualquiera de nuestras otras soluciones de bloqueo, nos encantaría conversar con usted. Comuníquese con nosotros para comenzar la discusión de adquisiciones y encontrar la mejor solución de bloqueo para sus necesidades.

7-6

Referencias

  • LOCURO DE CHECH Documentación oficial
  • Documentación del marco de primavera
Envíeconsulta