关于spring + quartz 定时启动集群问题
来源:互联网 发布:电魂网络官网 编辑:程序博客网 时间:2024/05/24 05:42
客户最近想做负载均衡,那我就说做呗,留一个服务器的定时,剩余的干掉。
客户跟我说:“不行”。
我说:“怎么滴?”
他的意思每次他们都是傻瓜式全量更新,手动去改配置文件极易出错,万一哪天运维喝多了,忘记删一个服务器的定时,那事不就大了么。
我心里“呵呵”。
呵呵归呵呵,还是得干。开始我想能不能在spring 装载的时候干掉定时总调度的bean,于是我写了一个ApplicationListener的实现类,每次项目启动后去找定时调度的StdScheduler,然后shutdown,貌似解决了这个问题。但是我发现,有瑕疵。假如这个运维很有意思,在定时启动的时间例如9点半这个时候取重启项目,那么受到加载顺序的影响,定时任务的执行顺序要比你shutdown的执行顺序靠前,总有一些会被执行。或者有那种一秒一次的定时任务,这种问题依然存在。
那么如何是好?
没招了,改基类吧。把quartz的包拿出来,反编译。QuartzScheduler这个类第363行找到statr()方法。我看到了调度器和监听器都在这个方法里被启用,那么我可以在这个方法里控制。既然客户不想改项目的配置文件,想一劳永逸,那么tomcat的环境你不会改吧。那好吧,http://www.cnblogs.com/yangmingke/p/6058898.html 根据这篇文章的介绍,我修改了tomcat的配置,然后在系统里加判断
public void start()
throws SchedulerException
{
String value = System.getProperty("scheduler.start");
if("true".equals(value)){
if ((this.shuttingDown) || (this.closed)) {
throw new SchedulerException("The Scheduler cannot be restarted after shutdown() has been called.");
}
if (this.initialStart == null)
{
this.initialStart = new Date();
this.resources.getJobStore().schedulerStarted();
startPlugins();
}
this.schedThread.togglePause(false);
getLog().info("Scheduler " + this.resources.getUniqueIdentifier() + " started.");
notifySchedulerListenersStarted();
}
}
经测试,符合了客户的要求。
- 关于spring + quartz 定时启动集群问题
- 关于spring定时启动quartz
- 关于spring的quartz(定时任务执行)问题,
- spring-quartz定时任务集群解决方案。
- Spring+quartz实现定时任务集群
- Spring+quartz集群配置,Spring定时任务集群,quartz定时任务集群
- 关于Spring整合quartz的定时任务
- Spring MVC quartz定时执行问题
- Spring quartz定时任务Service注入问题
- Spring-quartz定时任务service注入问题
- Spring中定时任务Quartz集群配置学习
- Spring中定时任务Quartz集群配置学习
- Spring中定时任务Quartz集群配置学习
- Quartz+Spring 分布式定时任务调度(二)- 集群配置
- Spring中定时任务Quartz集群配置学习
- Spring+Quartz定时任务集群环境下部署的解决方法
- Spring+Quartz框架实现定时任务(集群,分布式)
- spring boot下定时任务quartz的集群使用
- Intellij IDEA 自动生成 serialVersionUID
- React 入门例子
- mysql查询一天,查询一周,查询一个月的数据
- Ubuntu14.04 蓝牙适配器的连接
- HC-05与HC-06的AT指令的区别
- 关于spring + quartz 定时启动集群问题
- 在ubuntu下设置eclipse开发STM32等嵌入式设备
- 基于cocos2d-lua的shader入门玩转
- Spark中遇到的一些问题和相应的解决办法
- Linux ROS与嵌入式的串口通信
- 运行ORB-SLAM笔记_编译篇(一)
- 运行ORB-SLAM笔记_使用篇(二)
- GCD/Block
- 相机标定 matlab opencv ROS三种方法标定步骤(1)