数据库中有100条数据,在一个配置文件里面,配置了10个定时任务,但是走的job类是同 一个,在启动项目的时候,如何确保这同时跑的10个定时任务,不重复读取一条数据或者重复读取相同的几条数据,防止修改一条数据的时候,别的定时任务已经执行完成,这就造成了数据库重复添加数据; (加锁是不可能得因为造成死锁。)
配置文件如下
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="lastNum0" class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="lastNum" value="0" />
</map>
</constructor-arg>
</bean>
<bean id="lastNum1" class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="lastNum" value="1" />
</map>
</constructor-arg>
</bean>
<bean id="lastNum2" class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="lastNum" value="2" />
</map>
</constructor-arg>
</bean>
<bean id="lastNum3" class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="lastNum" value="3" />
</map>
</constructor-arg>
</bean>
<bean id="lastNum4" class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="lastNum" value="4" />
</map>
</constructor-arg>
</bean>
<bean id="lastNum5" class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="lastNum" value="5" />
</map>
</constructor-arg>
</bean>
<bean id="lastNum6" class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="lastNum" value="6" />
</map>
</constructor-arg>
</bean>
<bean id="lastNum7" class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="lastNum" value="7" />
</map>
</constructor-arg>
</bean>
<bean id="lastNum8" class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="lastNum" value="8" />
</map>
</constructor-arg>
</bean>
<bean id="lastNum9" class="org.quartz.JobDataMap">
<constructor-arg>
<map>
<entry key="lastNum" value="9" />
</map>
</constructor-arg>
</bean>
<bean id="policyQuartzServiceImpl" class="cn.com.sinosoft.clarify.business.service.impl.quartz.PolicyQuartzServiceImpl"/>
<!--<bean id="PolicyJob0" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" valcn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_22ller"></property>
<property name="jobDataMap">
<ref bean="lastNum0"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-rpolicyQuartzServiceImplImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob1"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
valcn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_22ller"></property>
<property name="jobDataMap">
<ref bean="lastNum1"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-rpolicyQuartzServiceImplImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob2"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
valcn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_22ller"></property>
<property name="jobDataMap">
<ref bean="lastNum2"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-rpolicyQuartzServiceImplImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob3"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
valcn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_22ller"></property>
<property name="jobDataMap">
<ref bean="lastNum3"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-rpolicyQuartzServiceImplImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob4"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
valcn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_22ller"></property>
<property name="jobDataMap">
<ref bean="lastNum4"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-rpolicyQuartzServiceImplImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob5"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
valcn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_22ller"></property>
<property name="jobDataMap">
<ref bean="lastNum5"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-rpolicyQuartzServiceImplImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob6"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
valcn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_22ller"></property>
<property name="jobDataMap">
<ref bean="lastNum6"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-rpolicyQuartzServiceImplImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob7"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
valcn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_22ller"></property>
<property name="jobDataMap">
<ref bean="lastNum7"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-rpolicyQuartzServiceImplImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob8"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
valcn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_22ller"></property>
<property name="jobDataMap">
<ref bean="lastNum8"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-rpolicyQuartzServiceImplImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob9"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
valcn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_22ller"></property>
<property name="jobDataMap">
<ref bean="lastNum9"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-rpolicyQuartzServiceImplImpl"></entry>
</map>
</property>
</bean>-->
<bean id="PolicyJob10"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
value="cn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_1"></property>
<property name="jobDataMap">
<ref bean="lastNum0"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-ref="policyQuartzServiceImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob11"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
value="cn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_1"></property>
<property name="jobDataMap">
<ref bean="lastNum1"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-ref="policyQuartzServiceImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob12"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
value="cn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_1"></property>
<property name="jobDataMap">
<ref bean="lastNum2"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-ref="policyQuartzServiceImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob13"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
value="cn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_1"></property>
<property name="jobDataMap">
<ref bean="lastNum3"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-ref="policyQuartzServiceImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob14"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
value="cn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_1"></property>
<property name="jobDataMap">
<ref bean="lastNum4"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-ref="policyQuartzServiceImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob15"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
value="cn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_1"></property>
<property name="jobDataMap">
<ref bean="lastNum5"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-ref="policyQuartzServiceImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob16"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
value="cn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_1"></property>
<property name="jobDataMap">
<ref bean="lastNum6"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-ref="policyQuartzServiceImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob17"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
value="cn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_1"></property>
<property name="jobDataMap">
<ref bean="lastNum7"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-ref="policyQuartzServiceImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob18"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
value="cn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_1"></property>
<property name="jobDataMap">
<ref bean="lastNum8"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-ref="policyQuartzServiceImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyJob19"
class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass"
value="cn.com.sinosoft.clarify.dispatch.quartzJob.PolicyQuartzJob_1"></property>
<property name="jobDataMap">
<ref bean="lastNum9"></ref>
</property>
<property name="jobDataAsMap">
<map>
<entry key="policyQuartzServiceimpl" value-ref="policyQuartzServiceImpl"></entry>
</map>
</property>
</bean>
<bean id="PolicyDateBean10" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="PolicyJob10"></property>
<property name="cronExpression" value="0/1 * * * * ?"></property>
</bean>
<bean id="PolicyDateBean11" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="PolicyJob11"></property>
<property name="cronExpression" value="0/1 * * * * ?"></property>
</bean>
<bean id="PolicyDateBean12" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="PolicyJob12"></property>
<property name="cronExpression" value="0/1 * * * * ?"></property>
</bean>
<bean id="PolicyDateBean13" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="PolicyJob13"></property>
<property name="cronExpression" value="0/1 * * * * ?"></property>
</bean>
<bean id="PolicyDateBean14" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="PolicyJob14"></property>
<property name="cronExpression" value="0/1 * * * * ?"></property>
</bean>
<bean id="PolicyDateBean15" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="PolicyJob15"></property>
<property name="cronExpression" value="0/1 * * * * ?"></property>
</bean>
<bean id="PolicyDateBean16" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="PolicyJob16"></property>
<property name="cronExpression" value="0/1 * * * * ?"></property>
</bean>
<bean id="PolicyDateBean17" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="PolicyJob17"></property>
<property name="cronExpression" value="0/1 * * * * ?"></property>
</bean>
<bean id="PolicyDateBean18" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="PolicyJob18"></property>
<property name="cronExpression" value="0/1 * * * * ?"></property>
</bean>
<bean id="PolicyDateBean19" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="PolicyJob19"></property>
<property name="cronExpression" value="0/1 * * * * ?"></property>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="true" autowire="no">
<property name="triggers">
<list>
<ref bean="PolicyDateBean10" />
<ref bean="PolicyDateBean11" />
<ref bean="PolicyDateBean12" />
<ref bean="PolicyDateBean13" />
<ref bean="PolicyDateBean14" />
<ref bean="PolicyDateBean15" />
<ref bean="PolicyDateBean16" />
<ref bean="PolicyDateBean17" />
<ref bean="PolicyDateBean18" />
<ref bean="PolicyDateBean19" />
</list>
</property>
<property name="configLocation" value="classpath:/quartz/quartz.properties" />
<!--<property name="autoStartup" value="true" />-->
</bean>