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

网站做的好是不是影响就大东莞做外贸网站公司

网站做的好是不是影响就大,东莞做外贸网站公司,全国企业名称注册查询,在线制作图片的免费软件文章目录 前言简介shedlock dbSchedulerLock注解说明 shedlock redis遇到的问题1.配置shedlock不生效 前言 多节点或者多服务器拥有相同的定时任务#xff0c;这种情况下#xff0c;不同节点的相同定时任务会被重复执行。如何解决分布式定时任务重复执行问题#xff1f;此… 文章目录 前言简介shedlock dbSchedulerLock注解说明 shedlock redis遇到的问题1.配置shedlock不生效 前言 多节点或者多服务器拥有相同的定时任务这种情况下不同节点的相同定时任务会被重复执行。如何解决分布式定时任务重复执行问题此刻我们可以引入分布式定时任务解决shedlock来解决这种定时任务重复执行的问题。 简介 Shedlock是一个基于Java的分布式锁库用于解决分布式环境下的并发问题。它可以确保同一时间只有一个线程能够获取到锁从而避免了多线程竞争导致的数据不一致或错误的问题。 Shedlock的原理是在数据库中创建一个特殊的表用于记录锁的状态和持有者信息。当一个线程想要获取锁时它会在表中插入一条记录如果插入成功则表示该线程成功获取到了锁否则表示有其他线程已经获取到了锁当前线程需要等待。 Shedlock提供了简单易用的API可以方便地在代码中使用锁。它支持不同的锁提供者包括数据库如MySQL、PostgreSQL、ZooKeeper等。此外Shedlock还提供了一些高级特性如自动解锁、锁超时、定时任务等以满足不同的场景需求。 总的来说Shedlock是一个可靠、高效的分布式锁库可以帮助开发者在分布式环境中处理并发问题保证数据的一致性和正确性。它的设计简单易于集成和使用是Java开发者的理想选择之一。 shedlock db 创建表 CREATE TABLE shedlock (name varchar(64) COLLATE utf8mb4_bin NOT NULL,lock_until timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),locked_at timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),locked_by varchar(255) COLLATE utf8mb4_bin NOT NULL,PRIMARY KEY (name) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_bin;引入依赖 dependencygroupIdnet.javacrumbs.shedlock/groupIdartifactIdshedlock-spring/artifactIdversion2.2.0/version/dependencydependencygroupIdnet.javacrumbs.shedlock/groupIdartifactIdshedlock-provider-jdbc-template/artifactIdversion2.2.0/version/dependency配置LockProvider 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.Autowired; 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;import static net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider.Configuration.builder;Configuration EnableScheduling //开启定时任务 EnableSchedulerLock(defaultLockAtMostFor PT30S) //默认锁的最大占有30秒 public class SchedulerConfiguration {AutowiredDataSource dataSource;Beanpublic LockProvider lockProvider() {// //可以自定义数据源可以作为一种考虑一般不使用这个 // org.apache.tomcat.jdbc.pool.DataSource dataSource1 new org.apache.tomcat.jdbc.pool.DataSource(); // dataSource1.setUrl(jdbc:mysql://127.0.0.1:3306/db1?useUnicodetruecharacterEncodingutf8useSSLfalse); // dataSource1.setUsername(root); // dataSource1.setPassword(123456);LockProvider lockProvider new JdbcTemplateLockProvider(builder()//指定表名.withTableName(shedlock)//指定数据源一般使用dataSource而非手动定义的数据源.withJdbcTemplate(new JdbcTemplate(dataSource))//指定表字段名称字段数量固定只能改名称且只有较高版本的shedlock-provider-jdbc-template依赖才提供该配置项 // .withColumnNames(new JdbcTemplateLockProvider.ColumnNames(name,lock_until,locked_at,locked_by))//使用数据库时间只有较高版本的shedlock-provider-jdbc-template依赖才提供该配置项 // .usingDbTime()//作用未知只有较高版本的shedlock-provider-jdbc-template依赖才提供该配置项 // .withLockedByValue(myvalue)//作用未知只有较高版本的shedlock-provider-jdbc-template依赖才提供该配置项 // .withIsolationLevel(1).build());return lockProvider;} }使用 Slf4j Component EnableScheduling //开启定时任务 public class MyJob {Scheduled(cron 0,15,30,45 * * * * ?)SchedulerLock(name task1, lockAtLeastForString PT5S, lockAtMostForString PT10S)public void task1() {log.info(-----task1-------);} } SchedulerLock注解说明 Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) Retention(RetentionPolicy.RUNTIME) public interface SchedulerLock {/*** 任务的名称同名任务互斥只会执行一个*/String name() default ;/*** 锁的最多占用多久,单位毫秒*/long lockAtMostFor() default -1L;/*** 锁的最多占用多久,字符格式,PT2S 表示2秒PT2M表示2分钟*/String lockAtMostForString() default ;/*** 锁的最少占用时间单位毫秒*/long lockAtLeastFor() default -1L;/*** 锁的最少占用时间,字符格式,PT2S 表示2秒PT2M表示2分钟*/String lockAtLeastForString() default ; }shedlock redis 引入依赖注意建议版本相同避免可能带来的版本兼容问题。 引入依赖 dependencygroupIdnet.javacrumbs.shedlock/groupIdartifactIdshedlock-spring/artifactIdversion2.2.0/version/dependencydependencygroupIdnet.javacrumbs.shedlock/groupIdartifactIdshedlock-provider-redis-spring/artifactIdversion2.2.0/version/dependency配置LockProvider Beanpublic LockProvider lockProvider(RedisTemplate redisTemplate) {return new RedisLockProvider(redisTemplate.getConnectionFactory());}遇到的问题 1.配置shedlock不生效 在非springboot中请确保配置的bean是否被扫描到确保LockProvider是否被加载到容器中。是否定时任务开启了线程池等
http://www.zqtcl.cn/news/326260/

相关文章:

  • 建站登录可信网站认证 费用
  • 互站网站源码用jsp做网站一般会用到什么
  • 个人免费设计网站fomo3d 网站怎么做
  • 菏泽做网站公司公关公司经营范围
  • 钓鱼网站营销型网站建设实战
  • 可以下载电影的网站怎么做做网站公司西安
  • 自己做签名网站网店美工培训教程
  • 宁波产品网站设计模板php 网站 教程
  • 制作一个网站的费用是多少免费网站空间怎么
  • 如何建立自己的微网站网站建设教程怎么建
  • seo网站项目讲解沈阳网红
  • 苏州大型网站建设公司网站外链优化
  • 阿里云购买域名后怎么建网站沂南网站设计
  • 网站建设基础考试php网站开发入门
  • 广州五屏网站建设seo诊断报告示例
  • 周浦高端网站建设公司信阳做网站的公司
  • 博客网站怎么建设湛江新闻头条最新消息
  • 外贸网站建设 评价有没有教做网站实例视频
  • 县 住房和城乡建设局网站wordpress接入支付宝
  • 网站建设初期推广方式天津网站建设案例
  • 销项税和进项导入是在国税网站做吗凡科网站模块
  • 苏州建网站皆去苏州聚尚网络常州企业建站系统
  • 网站建设明细wordpress 主题稳定
  • 网站设计论文前言怎么写肇庆网站开发哪家专业
  • 商城建站系统松江新城做网站公司
  • 长沙招聘做搜狗pc网站优化排
  • 辽宁智能建站系统价格金融做市场广告挂哪些网站
  • 做外贸的有哪些网站互动平台游戏
  • 网站设计最好的公司idc网站模板源码下载
  • 网站建设历史视频制作软件有哪些