Como usar o bloqueio de galpão com um aplicativo de estrutura de elevação?

May 29, 2025

Deixe um recado

John Lee
John Lee
Sou o diretor de tecnologia da Hunan Lianhu Hardware Co., impulsionando nossa estratégia de inovação. Meu foco é o desenvolvimento de soluções de hardware de ponta que atendam às demandas modernas.

No desenvolvimento moderno de software, o acesso simultâneo a recursos compartilhados pode levar a vários problemas, como inconsistência de dados e condições de corrida. O bloqueio de galpão é uma ferramenta poderosa que ajuda os desenvolvedores a gerenciar esses problemas de simultaneidade de maneira eficaz. Como fornecedor de bloqueio de galpão, estou aqui para guiá -lo sobre como integrar e usar o bloqueio de galpão com um aplicativo de estrutura de elevação.

Entendendo o bloqueio do galpão

O Shed Lock é uma biblioteca que fornece bloqueios distribuídos para tarefas programadas em um aplicativo Java. Ele garante que apenas uma instância de uma tarefa programada seja executada por vez em vários nós em um sistema distribuído. Isso é crucial ao lidar com recursos compartilhados ou executar tarefas que não devem ser executadas simultaneamente.

O conceito básico por trás do bloqueio do galpão é simples: ele usa um banco de dados ou outros sistemas de armazenamento para gerenciar bloqueios. Quando uma tarefa programada começa, ele tenta adquirir um bloqueio. Se o bloqueio estiver disponível, a tarefa prossegue; Caso contrário, espera ou pula a execução.

Pré -requisitos

Antes de começarmos a integrar o bloqueio de galpão com um aplicativo de estrutura de elevador, verifique se você tem o seguinte:

  1. Um aplicativo de estrutura de elevador de trabalho. Se você não tiver um, pode criar um novo projeto de elevação usando o SBT (Ferramenta de construção simples).
  2. Um banco de dados suportado pelo bloqueio do galpão. As opções populares incluem MySQL, PostgreSQL e H2.
  3. Conhecimento básico dos conceitos de Java e estrutura de elevação, como tarefas programadas e acesso ao banco de dados.

Etapa 1: Adicione dependências de bloqueio de galpão

Primeiro, você precisa adicionar as dependências de bloqueio do galpão ao seu projeto de elevação. Se você estiver usando o SBT, adicione as seguintes linhas ao seubuild.sbtarquivo:

biblioteca-dependências ++ = seq ("net.javacrumbs.shedlock" % "shedlock-spring" % "4.40.0", "net.javacrumbs.shedlock" % "shedlock-provider-jdbc-template" "4,40.0")

Essas dependências incluem a biblioteca de bloqueio do Core Shed e o provedor de modelos JDBC, que nos permite usar um banco de dados relacional para gerenciamento de bloqueio.

Etapa 2: Configure o banco de dados

Em seguida, você precisa configurar sua conexão com o banco de dados. Em um aplicativo de elevação, você pode usar o Sistema de Gerenciamento de Database do elevador ou uma biblioteca de terceiros como Spring JDBC.

19-38-6

Aqui está um exemplo de configuração de uma fonte de dados JDBC usando a Spring Boot'sDataSourceConfiguração em um aplicativo de elevação:

importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; importar org.springframework.jdbc.dataSource.driverManagerDataSource; importar javax.sql.datasource; @Configuration public class DatabaseConfig {@Bean public DataSource DataSource () {DriverManagerDataSource DataSource = new DriverManagerDataSource (); DataSource.SetDriverClassName ("com.mysql.cj.jdbc.driver"); DataSource.seturl ("JDBC: MySQL: // localhost: 3306/your_database"); DataSource.setUserName ("your_username"); DataSource.SetPassword ("your_password"); return DataSource; }}

Este código configura uma fonte de dados MySQL. Você precisa substituir o URL, o nome de usuário e a senha pelas suas credenciais reais de banco de dados.

Etapa 3: Crie um provedor de bloqueio

O Shed Lock usa um provedor de bloqueio para gerenciar bloqueios. Para um banco de dados baseado em JDBC, você pode criar umJDBCTemplatelockProviderdo seguinte modo:

Import net.javacrumbs.shedlock.provider.jdbctemplate.jdbctemplatelockprovider; importar net.javacrumbs.shedlock.spring.annotation.enableschedulerlock; importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration; importar org.springframework.jdbc.core.jdbctemplate; importar javax.sql.datasource; @Configuration @enableschedulerLock (defaultLockatsMor = "pt30s") classe pública ShedlockConfig {@Bean public jdbcTemplatelockProvider LockProvider (DataSource DataSource) {return jdbctemplatelockProvider (jdbcctem .WithJdBCTemplate (novo JDBCTemplate (DataSource) .UsingDBTime () .build ()); }}

O@EnableschedulerlockA anotação permite o bloqueio de galpão em seu aplicativo, e oDefaultLockATATMORAtributo Define o tempo máximo que um bloqueio pode ser mantido.

Etapa 4: Defina tarefas agendadas

Em um aplicativo de elevação, você pode definir tarefas agendadas usando o elevadorSobjeto ou primavera@Agendadoanotação. Aqui está um exemplo de usar o@AgendadoAnotação com bloqueio de galpão:

Import net.javacrumbs.shedlock.spring.annotation.schedulerlock; importar org.springframework.scheduling.annotation.scheduled; importar org.springframework.tereotype.component; @Component public class ScheduledTasks {@Scheduled (fIllrate = 60000) @ScHedulerLock (name = "myScheduledTask", Lockatterfor = "pt10s", LockatLeastFor = "Pt5s") public, myScheduledTask () {/ // "Task" }}

O@SchedulerlockAnotação é usada para especificar o nome da fechadura, o tempo máximo em que a trava pode ser mantida (Curl -postfor), e o tempo mínimo em que a fechadura deve ser mantida (LOCKATLEASTFOR).

Etapa 5: execute o aplicativo

Agora que você configurou o bloqueio de galpão e definiu suas tarefas programadas, você pode executar seu aplicativo de elevação. Quando a tarefa agendada é acionada, o bloqueio do galpão tentará adquirir o bloqueio. Se o bloqueio estiver disponível, a tarefa será executada; Caso contrário, ele ignorará a execução.

Uso avançado

  • Várias tarefas agendadas: Você pode definir várias tarefas agendadas em seu aplicativo, cada uma com sua própria bloqueio. Apenas certifique -se de usar nomes de bloqueio diferentes para cada tarefa.
  • Manuseio de erros: Você pode adicionar código de manuseio de erros nas suas tarefas agendadas para lidar com casos em que o bloqueio não pode ser adquirido ou a tarefa não executa.

Tipos de bloqueio adicionais

Além da funcionalidade básica de bloqueio do galpão, existem outros tipos de bloqueios que podem ser úteis em diferentes cenários. Por exemplo,Empurrar travaPode ser usado em situações em que você precisa de um mecanismo de travamento simples e rápido.Porta de travamento automáticoé adequado para aplicações onde são necessárias segurança e bloqueio automático. ELock de despensaPode ser usado para proteger as áreas de armazenamento e garantir que apenas o acesso autorizado seja permitido.

Conclusão

A integração do bloqueio de galpão com um aplicativo de estrutura de elevação é um processo direto que pode melhorar significativamente a confiabilidade e a consistência de suas tarefas programadas. Seguindo as etapas descritas neste guia, você pode garantir que seu aplicativo funcione sem problemas, mesmo em um ambiente distribuído.

Se você estiver interessado em usar nossas soluções de bloqueio de galpão para seus aplicativos de estrutura de elevação ou tiver alguma dúvida sobre nossos produtos, convidamos você a nos contatar para uma discussão detalhada. Nossa equipe de especialistas está pronta para ajudá -lo a encontrar as melhores soluções de travamento para suas necessidades específicas.

Referências

  • Documentação oficial de bloqueio de bloqueio.
  • Documentação oficial da estrutura de elevação.
  • Documentação de inicialização da primavera para JDBC e agendamento.
Enviar inquérito