在公司分享了Quartz,发布出来,希望大家讨论补充.
CRM使用Quartz集群分享
一:CRM对定时任务的依赖与问题
二:什么是quartz,如何使用,集群,优化
三:CRM中quartz与Spring结合使用
1:CRM对定时任务的依赖与问题
1)依赖
(1)每天晚上的定时任务,通过sql脚本 + crontab方式执行
#crm 0 2 * * * /opt/***/javafiles/***/shell/***_daily_stat.sql 30 7 * * * /opt/***/javafiles/***/shell/***_data_fix 30 0 * * * /opt/***/javafiles/***/shell/***_sync_log 0 1 * * * /opt/***/javafiles/***/shell/***_clear_log 20 8 * * * /opt/***/javafiles/***/shell/***_daily >> /var/***/logs/***_daily.log 2>&1 40 1 * * * /opt/***/javafiles/***/shell/***_sync_account2 0 2 * * 1 /opt/***/javafiles/***/shell/***_weekly >> /var/***/logs/***_weekly.log 2>&1
存在的问题:当需要跨库或许数据的,sql无能为力,引入许多中间表,完成复杂统计需求。大范围对线上热表扫描,造成锁表,延迟严重
(2)使用python(多数据源) + SQL的方式
def connectCRM():
return MySQLdb.Connection("localhost", "***", "***", "***", 3306, charset="utf8")
def connectTemp():
return MySQLdb.Connection("localhost", "***", "***", "***", 3306, charset="utf8")
def connectOA():
return MySQLdb.Connection("localhost", "***", "***", "***", 3306, charset="utf8")
def connectCore():
return MySQLdb.Connection("localhost", "***", "***", "***", 3306, charset="utf8")
def connectCT():
return MySQLdb.Connection("localhost", "***", "***", "***", 3306, charset="utf8")
存在的问题:直接访问数据,需要理解各系统的数据结构,无法满足动态任务问题,各系统业务接口没有重用
(3)使用spring + JDK timer方式调用接口完成定时任务
<bean id="accountStatusTaskScanner" class="***.impl.AccountStatusTaskScanner" /> <task:scheduler id="taskScheduler" pool-size="5" /> <task:scheduled-tasks scheduler="taskScheduler"> <task:scheduled ref="accountStatusTaskScanner" method="execute" cron="0 0 1 * * ?" /> </task:scheduled-tasks>
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29777-1.html
”“那当初是谁追我追的死去活来最后做了我女朋友
你如果在伊拉克对美国说“关你鸟事”