当前位置: 首页 > news >正文

网络小说网站建设做电子商务网站 费用

网络小说网站建设,做电子商务网站 费用,快手小程序,wordpress伪静态 加速本文大纲#x1f4d6; 1、背景#x1f342;2、SchedulerLock注解3、实现原理 1、背景#x1f342; Spring生态下#xff0c;日常开发定时任务#xff0c;使用Spring Task框架还是很常见的选择#xff0c;但Spring Task并不是为分布式环境设计的#xff0c;分布式环境下… 本文大纲 1、背景2、SchedulerLock注解3、实现原理 1、背景 Spring生态下日常开发定时任务使用Spring Task框架还是很常见的选择但Spring Task并不是为分布式环境设计的分布式环境下服务被部署到多个节点一个节点上运行着一个独立的Jvm各个节点之间并不会协调通讯因此同一个定时任务会在每一个节点上都执行一次导致任务重复执行此时可以考虑使用redis、zookeeper等中间件来实现分布式锁保证一次只有一个节点执行任务当然也可以考虑支持分布式调度等框架如Quartz、xxl-job 2、SchedulerLock注解 在分布式场景下可以使用SchedulerLock注解来弥补Spring Task的缺点注意⚠️这个不是Spring的注解是shedlock库的 package net.javacrumbs.shedlock.spring.annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) Retention(RetentionPolicy.RUNTIME) public interface SchedulerLock {String name() default ;String lockAtMostFor() default ;String lockAtLeastFor() default ; }SchedulerLock分布式锁的实现方式很多官方也提供了不同中间件的实现示例https://github.com/lukas-krecan/ShedLock/blob/master/README.md这里演示用mysql实现的过程 引入相关依赖注意依赖版本的兼容性 dependencygroupIdnet.javacrumbs.shedlock/groupIdartifactIdshedlock-spring/artifactIdversion4.42.0/version /dependency dependencygroupIdnet.javacrumbs.shedlock/groupIdartifactIdshedlock-provider-jdbc-template/artifactIdversion4.42.0/version /dependency配置锁提供者这里是mysql import net.javacrumbs.shedlock.core.LockProvider; import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider; import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.scheduling.annotation.EnableScheduling;import javax.sql.DataSource;Configuration EnableScheduling //这个是Spring注解开启Spring task功能的 EnableSchedulerLock(defaultLockAtMostFor 30m, defaultLockAtLeastFor 1m) public class LockConfig {Beanpublic LockProvider lockProvider(Qualifier(primaryDataSource) DataSource dataSource) {return new JdbcTemplateLockProvider(JdbcTemplateLockProvider.Configuration.builder()// 使用primaryDataSource这个自定义的数据源和业务接口用一个数据源就行 .withJdbcTemplate(new JdbcTemplate(dataSource)).usingDbTime().build());} }对应的库里建表 CREATE TABLE shedlock(name VARCHAR(64) NOT NULL, lock_until TIMESTAMP(3) NOT NULL,locked_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), locked_by VARCHAR(255) NOT NULL, PRIMARY KEY (name));使用 import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;...Scheduled(cron 0 0 * * * *) SchedulerLock(name your.task.schedule.lockName) //锁名称自定义可以驼峰可以点点点 public void scheduledTask() {// do something }补充下上面配置类里写了默认的锁持有的最长时间和最短时间对于特定任务可以自定义锁持有时间 SchedulerLock(name TaskScheduler_CommonWhiteRisksReport, lockAtMostFor ${task.schedulerLock.lockAtMost}, lockAtLeastFor ${task.schedulerLock.lockAtLeast})task:schedulerLock:lockAtMost: PT8MlockAtLeast: PT8M# Duration的格式是ISO-8601例如 # PT8M 表示8分钟 # PT30S 表示30秒 # PT1H 表示1小时3、实现原理 加EnableSchedulerLock注解后会引入SchedulerLockConfigurationSelector类 SchedulerLockConfigurationSelector类通过实现ImportSelector类导入了两个BeanLockConfigurationExtractorConfiguration 和 MethodProxyLockConfiguration Sting数组里是要注册成Bean的类的全类名这两步就是ImportSelector接口搭配Import注解声明Bean的方式一种使用 再往下LockConfigurationExtractorConfiguration配置类声明了ExtendedLockConfigurationExtractor这个Bean里面包含了锁的一些配置信息如默认最大持有时间这些配置是从注解的属性里拿到的这回配置提取的Bean会带着这些配置信息给下面要提到的另一个Bean使用 另一个配置类MethodProxyLockConfiguration则是声明了MethodProxyScheduledLockAdvisor这个Bean里面通过上面的lockConfigurationExtractor获取锁的一些配置 跟进MethodProxyLockConfiguration类发现其获取了一个切面切面就是包含SchedulerLock注解的方法切面拦截住以后增强的部分是LockingInterceptor对象 而方法增强部分就是根据我们提供的LockProvider来做加锁和释放锁的操作比如mysql向库里写数据Redis的setnx
http://www.zqtcl.cn/news/829672/

相关文章:

  • 带后台的网站模板下载wordpress文章置顶插件
  • 云阳营销型网站建设北京梵客装饰公司地址电话
  • 北京有哪些网站建设公司好网站做配置文件的作用
  • 网站制作定制做网站顾客提现金额后台
  • 歙县建设银行网站人员优化是什么意思
  • 网站建设需解决问题wp商城
  • 简单房地产网站在哪老版建设银行网站
  • 外贸网站如何做推广苏州小程序需要写网站建设方案书
  • 哪些企业会考虑做网站婚庆策划公司简介
  • php网站开发个人个人学做网站
  • php网站开发最新需求网站建设实习心得
  • 深圳公司的网站设计网页制作视频教程下载
  • 动漫网站开发优势网站做电话线用
  • 河南移动商城网站建设广州营销型企业网站建设
  • 佛山做网站公司个人账号密码网站建设
  • 做零售网站智慧建筑信息平台
  • 山西住房建设厅官方网站建设部建造师网站
  • 加大门户网站安全制度建设wordpress切换数据库
  • 百度代理服务器株洲seo优化
  • 即刻搜索网站提交入口网站中的打赏怎么做的
  • 电子商务网站建设课后作业开发公司管理制度
  • mysql同一数据库放多少个网站表优化大师windows
  • 微信小程序插件开发seo的网站建设
  • 婚纱摄影网站建设方案WordPress 同步网易博客
  • 上海长宁网站建设公司python语言基础
  • 官方网站怎样做餐饮业手机php网站
  • 网站建设企业有哪些内容十九届六中全会
  • 如何管理手机网站首页怎么建设一个社交网站
  • 网站规则山东网站备案网站
  • 成都网站制作龙兵科技做网站原型图用什么软件