美文网首页
MK-商品上下架方案细化

MK-商品上下架方案细化

作者: 龙少侠 | 来源:发表于2015-07-23 11:25 被阅读149次

    设置quartz定时器,每秒遍历数据库(可以考虑时延减轻负担),每秒遍历DB。

    首先明确 quartz job工作流程:

    1、Job
    表示一个工作,要执行的具体内容。此接口中只有一个方法
    void execute(JobExecutionContext context) ,实现它然后在里面定义遍历数据库操作。
    2、JobDetail
    JobDetail表示一个具体的可执行的调度程序,Job是这个可执行程调度程序所要执行的内容,另外JobDetail还包含了这个任务调度的方案和策略。
    3、Trigger
    代表一个调度参数的配置,使用 CronTrigger(String name, String group, String cronExpression) ,定义cronExpression:"0/1 * * * * ?",表示每秒触发一次。
    4、Scheduler
    代表一个调度容器,由SchedulerFactory创建,一个调度容器中可以注册多个JobDetail和Trigger,调用方法scheduleJob(JobDetail var1, Trigger var2)。当Trigger与JobDetail组合,就可以被Scheduler容器调度了。

    流程图 quartz每秒触发测试

    接下来就是连接数据库:

    1.SimpleJob.java

    public class SimpleJob implements Job {
    // private static final String findSql_src = "select sale_begin from item_db.item";
    public void execute(JobExecutionContext jobCtx)throws JobExecutionException
    {
    // Connection con_select = new
    System.out.println("DB run in " + jobCtx.getTrigger().getClass().getName() + " triggered time is: " + new Date());
    }

    }

    2.WEB-INF下面配置 quartz.properties

    #============================================================================
    # Configure Main Scheduler Properties
    #============================================================================
    org.quartz.scheduler.instanceName = DefaultQuartzScheduler
    org.quartz.scheduler.instanceId = AUTO
    org.quartz.scheduler.rmi.export = false
    org.quartz.scheduler.rmi.proxy = false
    org.quartz.scheduler.wrapJobExecutionInUserTransaction = false

    #============================================================================
    # Configure ThreadPool
    #============================================================================
    org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
    org.quartz.threadPool.threadCount = 10
    org.quartz.threadPool.threadPriority = 5
    org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true

    #============================================================================
    # Configure JobStore
    #============================================================================

    #org.quartz.jobStore.isClustered = true
    #org.quartz.jobStore.clusterCheckinInterval = 15000
    org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
    org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
    org.quartz.jobStore.tablePrefix = QRTZ_
    org.quartz.jobStore.isClustered = true
    org.quartz.jobStore.clusterCheckinInterval = 600000
    org.quartz.jobStore.dataSource = myDS

    #============================================================================
    # Configure DataSource
    #============================================================================
    org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
    org.quartz.dataSource.myDS.URL = jdbc:mysql://192.168.31.180/item_db
    org.quartz.dataSource.myDS.user = item_dev
    org.quartz.dataSource.myDS.password = 142569
    org.quartz.dataSource.myDS.maxConnections = 10

    2.配置 applicationContext.xml ,添加:

    <bean id="businessReport" class="SimpleJob" />

    <bean name="reportTask"
    class="org.springframework.scheduling.quartz.JobDetailBean">
    <property name="jobClass" value="SimpleJob" />
    </bean>

    <!-- 触发器 -->
    <bean id="cronTrigger"
    class="org.springframework.scheduling.quartz.CronTriggerBean">

    <!-- 指向我们的任务 -->
    <property name="jobDetail" ref="reportTask" />

    <!-- 每秒运行一次 -->
    <property name="cronExpression" value="0/1 * * * * ?" />
    </bean>

    <!-- 调度器 -->
    <bean
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
    <list>
    <!-- 触发器列表 -->
    <ref bean="cronTrigger" />
    </list>
    </property>
    <property name="configLocation" value="classpath:quartz.properties" />
    </bean>

    连接数据库后,执行查询语句" select * " 得到商品上下架时间 returnTime,根据 currentTime == returnTime 条件,获得当前时间需要上下架的商品 id ,根据 id 更新数据表" update * "。

    相关文章

      网友评论

          本文标题:MK-商品上下架方案细化

          本文链接:https://www.haomeiwen.com/subject/prnpqttx.html