多个定时任务同时执行一个job类,怎么确保执行的数据不重复; 5C

数据库中有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>

3个回答

可以用数据库悲观锁,取10条没处理过的数据,select * from table where status=0 for update,取出10条同时锁住这10条

其实不建议启10个timer,应该是启一个timer,取出数据后分配线程来处理。

另外,用注解启timer了解一下,比写xml优雅点

个人见解:数据库对应记录加锁,或者采用中间件将数据进行缓存处理一下,比如通过阻塞队列,进行处理。

100条数据,10个定时任务跑对吧,你10个定时任务就是10个对象。
你把100 条数据划分为10块,每块10条数据(可以以Id划分。1-10;11-20。。。。)不行么?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
为什么我的定时调度任务每次只能执行一个任务,而且是每次最后添加的任务。

创建定时任务 public static void createScheduleJob(Scheduler scheduler, String jobName, String jobGroup, String cronExpression, QrtzTaskInfo params) throws SchedulerException { /** 任务名称、任务分组、调度表达式 */ /** 构建job信息 */ JobDetail jobDetail = JobBuilder.newJob(QuertzClusterJob.class).withIdentity(jobName, jobGroup).build(); /** 放入参数,运行时的方法可以获取 */ jobDetail.getJobDataMap().put("requestUrl", params.getRequestUrl()); jobDetail.getJobDataMap().put("requestType", params.getRequestType()); /** 表达式调度构建器 */ CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression); /** 按新的cronExpression表达式构建一个新的trigger */ CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(jobName, jobGroup) .withSchedule(cronScheduleBuilder).build(); try { scheduler.scheduleJob(jobDetail, trigger); } catch (SchedulerException e) { logger.error("创建定时任务失败"); throw new SchedulerException("创建定时任务失败"); } }

Spring 定时任务 在执行方法时报空指针

定时任务的xml: <bean id="autoIPV6BusinessAlarmStatisticsJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass"> <value>com.boco.auto.AutoIPV6BusinessAlarmStatisticsReport</value> </property> </bean> <bean id="autoIPV6BusinessAlarmStatistics" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref local="autoIPV6BusinessAlarmStatisticsJob" /> </property> <property name="cronExpression"> <value>0 30 3 * * ?</value> </property> </bean> Spring注入: <bean name="/ReportCommonActionPipeRes" class="com.boco.web.struts.action.report.ReportCommonActionPipeRes" parent="baseAction"> <property name="reportCommonDao"> <ref local="reportCommonDao" /> </property> <property name="reportCommonDao_Local"> <ref local="reportCommonDao_Local" /> </property> <property name="reportCommonGroupDao"> <ref local="reportCommonGroupDao" /> </property> <property name="reportCommonService"> <ref local="reportCommonService" /> </property> <property name="linkReportDao_Local"> <ref local="linkReportDao_Local" /> </property> <property name="mysqlBaseDao"> <ref bean="mysqlBaseService" /> </property> <property name="statementManagementBean"> <ref bean="statementManagementBean" /> </property> <!-- add liuhuipeng --> <property name="vendorfaultService"> <ref local="vendorfaultService" /> </property> </bean> <bean id="vendorfaultService" class="com.boco.alarm.service.impl.VendorFaultReportServiceImpl"> <property name="reportCommonDao"> <ref local="reportCommonDao"/> </property> <property name="reportCommonDao_Local"> <ref local="reportCommonDao_Local" /> </property> <property name="alarmReportDao"> <ref local="alarmReportDao" /> </property> <property name="statementManagementBean"> <ref bean="statementManagementBean" /> </property> </bean> 定时任务: public class AutoAlarmStatisticsReport implements Job{ static Logger logger = Logger.getLogger(AutoAlarmStatisticsReport.class) ; private ReportCommonActionPipeRes pipeResAction; @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { logger.info("+++进入定时任务。+++"); generateReport(); } public void generateReport(){ logger.info("modelName=AlarmStatistics"); pipeResAction = (ReportCommonActionPipeRes)StartupApp.getInstance(). getAppContext().getBean("reportpiperesource"); String modelName = "IPV6BusinessAlarmStatistics"; Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String today = sdf.format(date); this.pipeResAction.insertBusinessNEStatistics(modelName); //insertBusinessNEStatistics(modelName); } } 调用此方法: public boolean insertBusinessNEStatistics(String modelName){ boolean isOk = false; Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String createDate = sdf.format(date); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date datestart = new Date(); String startDateString=""; startDateString= sdf1.format(datestart); List<Map> Allist = new ArrayList(); String informixSql = statementManagementBean.getStatementByName(modelName.trim()); Map parameterMap = new HashMap(); if((null == informixSql)||informixSql.equalsIgnoreCase("no such table")){ return isOk; }else{ String[] sql_Array = informixSql.split(";"); List<Map> dataList = new ArrayList<Map>(); for(String sql : sql_Array){ if(sql != null && sql.trim().length() > 0){ if(modelName.equalsIgnoreCase("AlarmStatistics")){ String procName = "{call pro_alarm_trans_counteveryday()}"; boolean isInsertflag= false; //测试: isInsertflag = true; // try { // isInsertflag = vendorfaultService.insertIPV6AlarmCount(procName); // logger.info("++获得告警标识:++"+isInsertflag); // } catch (Exception e) { // TODO: handle exception // logger.error("error 错误的信息", e); // } if(isInsertflag == true){ try{ dataList = vendorfaultService.queyAlarm(parameterMap, sql.trim(), false); }catch(Throwable t){ logger.error("error 错误的信息", t); } }else{ return isInsertflag; } }else{ //dataList = reportCommonDao.commonQuery(sql.trim(), parameterMap); dataList = reportCommonDao.commonQuery(sql.trim(), parameterMap); } } } isOk = true; } return isOk; }

quartz定时任务时间设置

在quartz 如何设置每天早上8点至晚上10, 每隔3小时进行作业; 请问下,该quartz定时任务时间表达式如何写?谢谢!

quartz执行任务的时候突然停止不继续执行并且没有任何异常信息

在使用quartz框架的时候执行数据抓取任务,一共启动了2个job,都是每隔30分钟重新执行,表达式为0 0/30 * ? * * * 第一个任务执行的时间比较短在1个小时左右,第二个任务执行的时间比较长,3个小时左右,触发器触发之后每次执行2个多小时后就突然停止,后台和log也没有任何异常信息报出。我使用的是有状态的job。但是当使用2台服务器各自运行一个Job的时候使用相同的表达式,从早上运行到现在也没有任何问题。求解!

spring定时任务时间格式

spring定时任务时间格式,每30秒执行一次,这样是"0 0/1 * * * ?"一分钟

SpringBatch 和 quartz定时,quartz调用多个springbatchjob异常,

异常如下: 2015-05-12 11:49:30.046 [startQuertz_Worker-5] ERROR org.quartz.core.JobRunShell - Job DEFAULT.busBatchJobDetail threw an unhandled Exception: org.springframework.dao.CannotSerializeTransactionException: PreparedStatementCallback; SQL [INSERT into BATCH_JOB_EXECUTION(JOB_EXECUTION_ID, JOB_INSTANCE_ID, START_TIME, END_TIME, STATUS, EXIT_CODE, EXIT_MESSAGE, VERSION, CREATE_TIME, LAST_UPDATED) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; ORA-08177: 无法连续访问此事务处理 ; nested exception is java.sql.SQLException: ORA-08177: 无法连续访问此事务处理 at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:267) ~[spring-jdbc-4.0.0.RELEASE.jar:4.0.0.RELEASE] at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73) ~[spring-jdbc-4.0.0.RELEASE.jar:4.0.0.RELEASE] at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658) ~[spring-jdbc-4.0.0.RELEASE.jar:4.0.0.RELEASE] 以下是.xml配置 <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> <property name="jobRepository" ref="jobRepository"/> </bean> <!--// Spring batch 持久化机制 默认id为jobRepository--> <bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="transactionManager" ref="transactionManager"/> <property name="lobHandler" ref="lobHandler"/> <property name="isolationLevelForCreate" value="ISOLATION_READ_COMMITTED"/> </bean> <!--// mapJobRepository 不将JobExecution和jobExectution存入数据库--> <!--<bean id="jobRepository"--> <!--class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"--> <!--lazy-init="true" autowire-candidate="false"/>--> <!--//stopping, restarting, or summarizing a Job--> <bean id="jobOperator" class="org.springframework.batch.core.launch.support.SimpleJobOperator"> <property name="jobLauncher" ref="jobLauncher"/> <property name="jobExplorer" ref="jobExplorer"/> <property name="jobRepository" ref="jobRepository"/> <property name="jobRegistry" ref="jobRegistry"/> </bean> <!--// 读取jobRepository类,只读。--> <bean id="jobExplorer" class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean"> <property name="dataSource" ref="dataSource"/> </bean> <!--//用来记载多个jobs,进行注册 并可以修改相应job的参数--> <bean id="jobRegistry" class="org.springframework.batch.core.configuration.support.MapJobRegistry"/> <bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler"/> <!--必须配置ExecutionContextPromotionListener才能往jobExecutionContext中写--> <bean id="promotionListener" class="org.springframework.batch.core.listener.ExecutionContextPromotionListener"> <property name="keys" value="size"/> </bean> 同时我还想将JobExecution和jobExectution存到数据库

springboot整合Quartz,任务代码如何不实现JOB

import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class HelloJob implements Job { private static Logger _log = LoggerFactory.getLogger(HelloJob.class); public HelloJob() { } public void execute(JobExecutionContext context) throws JobExecutionException { _log.error("Hello Job执行时间: " + new Date()); } } 我在网上看到的很多大神springboot整合Quartz,在任务代码类那里都是实现了JOB接口,然后才能被Quartz执行。目前想请教一下各位大神,有什么什么好方法不用实现JOB接口,就可以直接将代码做成定时任务。 环境:springboot2.0.5 JDK10 eclipse2018 需求:整合springboot和quartz,前端可以通过页面对Quartz 框架管理的定时任务做增删改查,任务都是动态添加的。可以指定具体执行哪个方法。 具体效果和这博客差不多:https://blog.csdn.net/weixin_39477597/article/details/81537384?utm_source=blogxgwz0 但是在任务代码哪里,不需要实现JOB接口,自己随便指定一个代码类或者方法,就可以定时执行了。

Spring Schedule定时任务不抛出异常

``` @Scheduled(cron = "0 2/1 * * * ?") public void ru1(){ String s=""; Integer.parseInt(s); } ``` 这个代码为什么在运行时没有异常抛出?

多线程+Quartz+ActiveMQ

各位,急需帮助!! 需求:Spring+Quartz 定时任务job,每分钟执行一次, Job中逻辑:利用线程池 开启了10个线程,这10个线程执行“发送消息那个逻辑”,public void doExecute() { 从MongoDB中获取满足条件的数据 并 发送至MQ,发送MQ有个条件:先去MQ中获取队列剩余数,(我设置了MQ队列最大数200),若剩余数超过200则不发送 } 现在的问题是:控制不了了,现在队列数已经超过200了,怎么办?

quartz重复执行的问题

最近用到quartz做集群,需求每隔一段时间执行一次任务。 发现在配置较短的时间间隔,比如15秒钟执行一次时,会出现,服务器启动会有多个线程(不等,有时候2个,多的时候4个,quartz线程数目用的默认的10个)重复执行该任务。 控制台信息如下:![图片说明](https://img-ask.csdn.net/upload/201602/17/1455695692_26893.png) 而当我配置成1min执行一次的时候,就没有问题,不会重发执行。 主要的配置文件如下,求解,感谢感谢。 ``` <bean id="autoRepeatRequestTask" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass"> <value>com..job.AutoRequestRepeatJob</value> </property> <property name="durability" value="true" /> <property name="requestsRecovery" value="true" /> </bean> <!-- 定义触发时间 --> <bean id="autoRepeatRequestDoTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail"> <ref bean="autoRepeatRequestTask" /> </property> <!-- cron表达式 --> <property name="cronExpression"> <value>0 * * * * ?</value> <!--每分钟执行一次 --> </property> </bean> <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 --> <bean id="startQuartz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" destroy-method="destroy"> <property name="configLocation" value="classpath:quartz.properties" /> <property name="triggers"> <list> <ref bean="autoRepeatRequestDoTime" /> </list> </property> <property name="startupDelay" value="10" /> <property name="applicationContextSchedulerContextKey" value="applicationContextKey" /> </bean> ``` 执行的任务类: ``` @PersistJobDataAfterExecution @DisallowConcurrentExecution // 不允许并发执行 public class AutoRequestRepeatJob extends QuartzJobBean { private static final Logger LOGGER = LoggerFactory.getLogger(AutoRequestRepeatJob.class); @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { System.out.println(Thread.currentThread().getName()+"------初始化了"+DateTimeUtils.getNowHHmmss()); RequestRepeatService requestRepeatService = getApplicationContext(context).getBean(RequestRepeatService.class); requestRepeatService.autoRepeatRequest(); } private ApplicationContext getApplicationContext(final JobExecutionContext jobexecutioncontext) { try { return (ApplicationContext) jobexecutioncontext.getScheduler().getContext().get("applicationContextKey"); } catch (SchedulerException e) { LOGGER.error("jobexecutioncontext.getScheduler().getContext() error!", e); throw new RuntimeException(e); } } } ```

quartz数据库持久化后任务不运行

quartz基于内存运行时没问题,现在想改成集群运行,建表配置后系统没报错,表的初始数据也插进去了,但是任务没在跑,请问是啥原因

{"ORA-06550: PLS-00306: 调用 '**' 时 错误 ORA-06550:

{"ORA-06550: 第 1 行, 第 7 列: PLS-00306: 调用 'PROC_GETDATA' 时参数个数或类型错误 ORA-06550: 第 1 行, 第 7 列: PL/SQL: Statement ignored "} 这是我的程序调用代码 ''' <summary> ''' 获取数据的万能存储过程,查询返回结果集的存储过程调用 ''' Author:Jones.Vale ''' Datetime:20160127 ''' </summary> ''' <param name="strProcName">存储过程名</param> ''' <param name="pa">传入的参数数组,第一列为参数名,第二列为参数值</param> ''' <returns></returns> ''' <remarks></remarks> Public Function ExecStoredProcData(ByVal strProcName As String, ByVal objHashtable As Hashtable) As DataSet Dim mydt As New DataSet Dim myCommand As OracleCommand Dim objOracleParameter As IDictionaryEnumerator = objHashtable.GetEnumerator() Dim iii As Integer iii = 30 myCommand = myORACLEConnection.CreateCommand While objOracleParameter.MoveNext() Dim tempValue As String = TypeName(objOracleParameter.Value) Dim myParameter As New OracleParameter '定义一个参数 If tempValue = "Date" Then myParameter.DbType = DbType.Date '赋参数类型 ElseIf tempValue = "Integer" Then myParameter.DbType = DbType.Int32 '赋参数类型 ElseIf tempValue = "Double" Or tempValue = "Float" Or tempValue = "NUMBER" Then myParameter.DbType = DbType.Double '赋参数类型 Else myParameter.DbType = DbType.String '赋参数类型 End If myParameter.ParameterName = objOracleParameter.Key myParameter.Value = objOracleParameter.Value myCommand.Parameters.Add(myParameter) '加入参数列表 End While myCommand.CommandText = strProcName myCommand.CommandType = CommandType.StoredProcedure Dim dataAdapter As New OracleDataAdapter dataAdapter.SelectCommand() = myCommand dataAdapter.Fill(mydt) Return mydt End Function 以下是在plSQL中执行测试结果没有任何问题。 存储过程代码: CREATE OR REPLACE PROCEDURE PROC_GetData ( v_dateTime date, v_tiger number, p_cur out SYS_REFCURSOR---游标返回 ) as v_sql varchar2(2000) := ' '; begin if v_tiger = 2 then v_sql :='select t.branchno,sum(t.reportloss)/10000 as RV from bhresvfee.t_resv_claim_bhsys t where t.insuranceclass like (''7%'') and casestate<>''9'' group by t.branchno order by t.branchno'; end if; OPEN p_cur FOR v_sql; end PROC_GetData; 高手请指点一下这个问题是什么引起的。怎么处理才有效,谢谢!

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

Linux 会成为主流桌面操作系统吗?

整理 |屠敏出品 | CSDN(ID:CSDNnews)2020 年 1 月 14 日,微软正式停止了 Windows 7 系统的扩展支持,这意味着服役十年的 Windows 7,属于...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

学习总结之HTML5剑指前端(建议收藏,图文并茂)

前言学习《HTML5与CSS3权威指南》这本书很不错,学完之后我颇有感触,觉得web的世界开明了许多。这本书是需要有一定基础的web前端开发工程师。这本书主要学习HTML5和css3,看...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

搜狗输入法也在挑战国人的智商!

故事总是一个接着一个到来...上周写完《鲁大师已经彻底沦为一款垃圾流氓软件!》这篇文章之后,鲁大师的市场工作人员就找到了我,希望把这篇文章删除掉。经过一番沟通我先把这篇文章从公号中删除了...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

新一代神器STM32CubeMonitor介绍、下载、安装和使用教程

关注、星标公众号,不错过精彩内容作者:黄工公众号:strongerHuang最近ST官网悄悄新上线了一款比较强大的工具:STM32CubeMonitor V1.0.0。经过我研究和使用之...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

冒泡排序动画(基于python pygame实现)

本项目效果初始截图如下 动画见本人b站投稿:https://www.bilibili.com/video/av95491382 本项目对应github地址:https://github.com/BigShuang python版本:3.6,pygame版本:1.9.3。(python版本一致应该就没什么问题) 样例gif如下 ======================= 大爽歌作,mad

Redis核心原理与应用实践

Redis核心原理与应用实践 在很多场景下都会使用Redis,但是到了深层次的时候就了解的不是那么深刻,以至于在面试的时候经常会遇到卡壳的现象,学习知识要做到系统和深入,不要把Redis想象的过于复杂,和Mysql一样,是个读取数据的软件。 有一个理解是Redis是key value缓存服务器,更多的优点在于对value的操作更加丰富。 安装 yum install redis #yum安装 b...

现代的 “Hello, World”,可不仅仅是几行代码而已

作者 |Charles R. Martin译者 | 弯月,责编 | 夕颜头图 |付费下载自视觉中国出品 | CSDN(ID:CSDNnews)新手...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

程序员毕业去大公司好还是小公司好?

虽然大公司并不是人人都能进,但我仍建议还未毕业的同学,尽力地通过校招向大公司挤,但凡挤进去,你这一生会容易很多。 大公司哪里好?没能进大公司怎么办?答案都在这里了,记得帮我点赞哦。 目录: 技术氛围 内部晋升与跳槽 啥也没学会,公司倒闭了? 不同的人脉圈,注定会有不同的结果 没能去大厂怎么办? 一、技术氛围 纵观整个程序员技术领域,哪个在行业有所名气的大牛,不是在大厂? 而且众所...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

立即提问
相关内容推荐