DuplicateKey异常试图运行多个实例的批处理作业

萨钦:

我在同一时间使用相同的参数运行在集群中的批处理作业。虽然,它的精细,它是一个实例,但我得到的唯一的例外是运行:

Detail: Key (job_name, job_key)=(offlineTicketRefreshJob, c5d36835a13fd8ae0e91a69a6fa1c2d8) already exists.; nested exception is org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "job_inst_un"

我期待它会给JobAlreadyRunningException或其他。我觉得隔离级别也是序列化的批处理作业仓库,所以为什么它给PSQLException?

马哈茂德·本·Hassine:

如果你正确地配置你的工作库中的隔离级别不应该发生。你不同意你的工作库配置,但你可以找到一个例子INT的配置JobRepository为JobRepository事务配置部分:

// This would reside in your BatchConfigurer implementation
@Override
protected JobRepository createJobRepository() throws Exception {
   JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
   factory.setDataSource(dataSource);
   factory.setTransactionManager(transactionManager);
   factory.setIsolationLevelForCreate("ISOLATION_SERIALIZABLE");
   factory.setTablePrefix("BATCH_");
   factory.setMaxVarCharLength(1000);
   return factory.getObject();
}

一个积极的隔离级别可以防止在集群环境中创建重复的工作情况。SERIALIZABLEREAD_COMMITTED应工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从多个应用程序实例同时运行相同的 spring 批处理作业

同时在Windows中运行批处理文件的多个实例?

春季批处理作业实例已存在

春季批处理-由于死锁异常而自动重新运行的作业失败

Spring Boot如何运行批处理作业

多次运行弹簧批处理作业

如何使用find命令为多个扩展运行批处理作业?

通过批处理文件同时运行多个MATLAB实例

试图让Codesys从HMI运行批处理文件

使用批处理运行多个java程序

从控制器运行spring批处理作业

使用参数从C ++程序运行批处理作业

从bash脚本,批处理模式运行mpi作业

Spring批处理如何循环运行作业直到满足条件?

进程终止后,定期运行批处理作业

如何并行运行Wildfly批处理作业

Apache Mesos运行批处理,单例作业?

春季批处理作业中有多个分区程序

在春季批处理中配置作业的多个版本

MediatR事件中引发的处理异常作为hangfire作业运行

批处理文件中的开关箱运行异常

批处理运行不会捕获控制台中的异常

Java-Cron作业-如果实例触发批处理作业,请阻止其他实例执行相同的操作

如果Web作业在多个实例上运行,是否会运行相同的作业?

CannotPullContainerError:AWS批处理作业

运行批处理文件,该批处理文件运行SQL Server作业中的其他2个批处理文件

如果要运行类的方法,如何使用parcluster在Matlab中运行批处理作业

Spring批处理作业可读取多个文件并写入多个表

从HDFS源流式传输时如何运行多个批处理?