我有一个小的示例Spring Batch应用程序,该应用程序在首次启动时可以正常运行,但是每当我关闭该应用程序并重新启动jar时,我总是会收到此错误:

Caused by: org.springframework.dao.DuplicateKeyException: PreparedStatementCallback; SQL [INSERT into BATCH_JOB_INSTANCE(JOB_INSTANCE_ID, JOB_NAME, JOB_KEY, VERSION) values (?, ?, ?, ?)]; Duplicate entry '1' for key 1; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 1

我不确定作业增量器设置是否错误。但是就像我说的那样,我可以启动它,然后使用Web服务url

/jobLauncher.html任意次调用批处理。只有在我关闭应用程序并重新启动它之后,我才收到此错误。它想为作业执行表使用ID

1,但以前的运行中已经有ID 1。

主班

@EnableAutoConfiguration

@ComponentScan

public class Application {

public static void main(String[] args) throws Exception {

SpringApplication.run(Application.class, new String[]{ "date=" + System.currentTimeMillis() });

}

}

Web服务类

@Controller

public class JobLauncherController {

@Autowired

JobLauncher jobLauncher;

@Autowired

Job job;

@RequestMapping("/jobLauncher.html")

@ResponseBody

public String handle() throws Exception{

jobLauncher.run(job, new JobParametersBuilder().addString("date", System.currentTimeMillis() + "").toJobParameters());

return "Started the batch...";

}

}

Spring批处理类

@Configuration

@EnableBatchProcessing

public class SampleBatchApplication {

@Autowired

private JobBuilderFactory jobs;

@Autowired

private StepBuilderFactory steps;

@Bean

protected Tasklet tasklet() {

return new Tasklet() {

@Override

public RepeatStatus execute(StepContribution contribution,

ChunkContext context) {

return RepeatStatus.FINISHED;

}

};

}

@Bean

public Job job() throws Exception {

return this.jobs.get("job")

.incrementer(new RunIdIncrementer())

.flow(this.step1())

.end()

.build();

}

@Bean

protected Step step1() throws Exception {

return this.steps.get("step1").tasklet(this.tasklet()).build();

}

@Bean

public DataSource dataSource() {

BasicDataSource ds = new BasicDataSource();

try {

ds.setDriverClassName("com.mysql.jdbc.Driver");

ds.setUsername("test");

ds.setPassword("test");

ds.setUrl("jdbc:mysql://127.0.0.1:3306/spring-batch");

} catch (Exception e) {

e.printStackTrace();

}

return ds;

}

}

batch spring 重复执行_重复的Spring Batch作业实例相关推荐

  1. spring启动执行_执行器的Spring启动和安全性事件

    spring启动执行 Spring Boot Actuator提供了审核功能,用于在启用了Spring Security的Spring Boot应用程序中发布和侦听与安全相关的事件. 默认事件是身份验 ...

  2. python重复执行_关于计时器:在Python中每x秒重复执行一次函数的最佳方法是什么?...

    我想永远每60秒在Python中重复执行一个函数(就像目标C中的NSTimer一样). 这段代码将作为守护进程运行,实际上就像使用cron每分钟调用python脚本一样,但不需要用户设置. 在这个关于 ...

  3. shell中执行某条语句失败能不能重复执行_如何重复执行一条命令直至运行成功?...

    大家好,我是良许. 在我们的日常工作中,需要我们重复做的工作简直不能太多.比如,我们想要确认网络是否是连通的,传统的做法就是使用 ping 命令不停去测试某个地址(比如百度).网络比较好还好说,但如果 ...

  4. spring 循环依赖_简单说说 Spring 的循环依赖

    作者 | 田伟然 回首向来萧瑟处,归去,也无风雨也无晴. 杏仁工程师,关注编码和诗词. 前言 本文最耗时间的点就在于想一个好的标题, 既要灿烂夺目,又要光华内敛,事实证明这比砍需求还要难! 由于对象之 ...

  5. php 程序重复执行命令,重复执行bat命令.bat

    重复执行bat命令.bat :start ping -n 5 127.0.0.1 >nul start cmd /c "cd/d C:\Users\Administrator\Desk ...

  6. batch spring 重复执行_可能是最漂亮的Spring事务管理详解

    作者:Guide哥 事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完 ...

  7. batch spring 重复执行_一个3年老javaer竟然连Spring的事务管理都不知道,惊呆了

    1.事务介绍 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 这里我们以取钱的例子来讲解:比如你去ATM ...

  8. Spring 定时执行任务重复执行多次

    使用spring的定时任务组件的时候,代码如下. @Scheduled(cron="0 5/5 * * * ?")public void sendWeatherSMS(){Stri ...

  9. shell中执行某条语句失败能不能重复执行_如何理解Mysql中的事务隔离级别?

    要说清楚Mysql中的事务隔离级别,我们先从事务的定义说起.事务,是一个或一组sql语句组成的一个执行单元,这个执行单元要么全部执行,要么全部不执行.整个单独单元作为一个不可分割的整体,如果单元中某条 ...

最新文章

  1. 从Ubuntu命令行按进程名称杀死进程
  2. 进程间通信————无名管道
  3. java 数组正则表达式_java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】...
  4. python自动化工具哪个好用_微软最强 Python 自动化工具开源了!不用写一行代码!...
  5. jQuery: 插件开发模式详解 $.extend(), $.fn, $.widget()
  6. 动态规划——矩阵连乘(算法设计课题)
  7. 计算机课程学习小结,计算机课程学习心得5篇___.docx
  8. NOI2015 荷马史诗
  9. flutter listview 滚动到底部_Flutter系列之Flex布局详解
  10. arduino支持的内核版本_Arduino开发(arduino IDE)
  11. 静态嵌套类和非静态嵌套类
  12. Unit06: 数组的常用方法_2 、 二维数组 、 String_1
  13. html小任务,编写表单里的各项元素
  14. uuid会重复吗_记一次订单号重复的事故,快看看你的 UUID 在并发下还正确吗?...
  15. 苹果手机屏幕镜像搜索不到电视_用手机开热点投屏需要流量吗?
  16. Mac_IOS_报:The Xcode build system has crashed. Please close and reopen your workspace.
  17. MySQL程序员面试笔试宝典pdf_数据库程序员面试笔试宝典
  18. hexo大家博客时浏览量和访客量异常
  19. SiteFactory支持ppt一键上传
  20. thinksns php7,centos 7 部署Thinksns的思路详解

热门文章

  1. 第一百期:Java架构师:高并发下的流量控制
  2. 第四十七期:毕业3年Java程序员,年薪20W,他是如何达到的?
  3. linux mysql数据库备份并删除前一分钟的数据
  4. Linux 多线程开发-等待线程结束pthread_join
  5. Linux的Qt编译出现:-1: error: cannot find -lGL问题的解决方法
  6. 诺基亚7原生android,【诺基亚7Plus评测】系统:简洁原生安卓功能却不简单_诺基亚 7 Plus(4GB RAM/全网通)_手机评测-中关村在线...
  7. lpr命令linux下未找到,linux – LPR命令无法识别CUPS打印机
  8. Request请求:Failed to execute ‘setRequestHeader‘ on ‘XMLHttpRequest‘: String contains non ISO-8859-1 c
  9. CSS中height:100%和height:inherit的异同
  10. 一文了解类别型特征的编码方法