>Java >두 개 이상의 Spring Batch 작업을 동시에 시작하려고 하면 ORA-08177: Unable to serialize access for this transaction 오류가 발생합니다.

두 개 이상의 Spring Batch 작업을 동시에 시작하려고 하면 ORA-08177: Unable to serialize access for this transaction 오류가 발생합니다.

王林
王林앞으로
2024-02-09 17:00:10624검색

php 편집기 Xigua는 Spring Batch를 사용할 때 문제가 발생할 수 있습니다. 두 개 이상의 Spring Batch 작업을 동시에 시작하려고 하면 오류가 발생합니다: ORA-08177: Unable to serialize access to this transaction. 이 오류는 혼란스러울 수 있지만 실제로는 데이터베이스 잠금 문제로 인해 발생합니다. 이 문제를 해결하기 전에 Spring Batch 및 데이터베이스 트랜잭션에 대한 배경 지식을 이해해야 합니다.

질문 내용

comletablefuture를 사용하여 두 개의 스프링 배치 작업을 병렬로 실행하려고 할 때 오류가 발생했습니다. 오류 메시지는 다음과 같습니다:

으아악

저는 스프링 배치 5.x, 스프링 부트 3.1.6, jdk 17을 사용하고 있습니다

응용 프로그램 속성

으아악

batchconfig.java

으아악

}

employeejobconfig.java

으아악

managerconfig.java

으아악

batchjobmanager.java

으아악

batchexecutorservice.java

으아악

batchjobrunner.java

으아악

batchjob.java

으아악

작업은 하나씩 또는 순차적으로 실행될 때 성공적으로 실행됩니다. 그런데 completablefuture를 사용하다가 문제가 발생했습니다. 스프링 배치 작업을 동시에 시작하는 것이 올바른 방법인가요?

Solution

1. application.properties

에 다음 속성을 추가합니다.

spring.main.allow-bean-definition-overriding=true

2. 아래의 batconfig.java에 표시된 대로 joblauncher()를 업데이트했습니다. 으아악

  1. 완전한 미래를 제거했습니다.

  2. batchexecutorservice.java를 삭제했습니다

  3. 작업을 호출하기 위해 Batchjobmanager.java에 다음 메서드를 추가했습니다.

    으아악

위 내용은 두 개 이상의 Spring Batch 작업을 동시에 시작하려고 하면 ORA-08177: Unable to serialize access for this transaction 오류가 발생합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제

관련 기사

더보기