1.需求
商家把需要上下架的商品设置一个上下架时间,后台服务端需要按时将该商品上下架。
2.现状
目前服务端:1台数据库服务器+2台无状态web服务器,通过web服务器读写数据库,可能存在冲突。
3.技术
考虑 quartz+spring+mysql
4.方案
1)给每一个商品设置一个qurartz cron表达式,问题在于:每一个商品都要给它new一个quartz实例,容易产生内存消耗。
CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);
trigger.setCronExpression(updownTime);// 触发器时间设定
2)设置quartz定时器,每秒遍历数据库(可以考虑时延减轻负担),每秒遍历DB,可以配置里面写死,比如通过spring配置:
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
work
0/1 * * * * ?
如果不用spring配置quartz的话,还可以通过quartz.properties进行配置。
#==================================