[SPRING] Spring 재시도와 Retryable 결합
SPRINGSpring 재시도와 Retryable 결합
특정 예외에 대해 Spring 재시도 메소드가 있고 트랜잭션 (Requires_new)을 가지고있는 경우 재 시도가 완료 될 때마다 새 트랜잭션을 만들거나 기존 트랜잭션을 사용합니까?
즉
@Retryable(maxAttempts = 5, backoff = @Backoff(delay = 250), include = {ActivitiOptimisticLockingException.class})
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void setVariable(String processId, String variableName, String variableValue){
engine.getRuntimeService().setVariable(processId, variableName, variableValue);
}
여기서 실제로 무엇이 일어날 것인가?
해결법
-
==============================
1.매번 새로운 거래가 생성됩니다. 그것은 스프링 컨텍스트로부터 메소드를 얻고 N 메소드를 호출하는 것과 같다. 모든 호출은 새로운 트랜잭션을 생성합니다 (서비스 또는 메소드에 추가 한 전파 사용). transactioanl servics 메소드를 호출하여 프록시를 호출하고, 프록시도 호출을 다시 시도하십시오. 또한 트랜잭션에 시간 초과가 있었을 수 있습니다. 새 제한 시간 동안 try try를 다시 시도하고 N 회 시도하지 않고 한 번의 제한 시간 내에 시도하십시오.
매번 새로운 거래가 생성됩니다. 그것은 스프링 컨텍스트로부터 메소드를 얻고 N 메소드를 호출하는 것과 같다. 모든 호출은 새로운 트랜잭션을 생성합니다 (서비스 또는 메소드에 추가 한 전파 사용). transactioanl servics 메소드를 호출하여 프록시를 호출하고, 프록시도 호출을 다시 시도하십시오. 또한 트랜잭션에 시간 초과가 있었을 수 있습니다. 새 제한 시간 동안 try try를 다시 시도하고 N 회 시도하지 않고 한 번의 제한 시간 내에 시도하십시오.
from https://stackoverflow.com/questions/44693983/spring-new-transaction-combined-with-retryable by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] spring : escapeBody 결과 JSON이 잘못되었습니다. (0) | 2019.05.22 |
---|---|
[SPRING] Spring 구성 클래스에서 생성자 삽입이 가능합니까? (0) | 2019.05.22 |
[SPRING] Spring Boot를 2.1.1에서 2.1.2로 업그레이드 할 때 오류가 발생했습니다. (0) | 2019.05.22 |
[SPRING] 작업 제출 후 ClassNotFoundException (0) | 2019.05.22 |
[SPRING] 중첩 된 리소스에 대한 스프링 데이터 나머지의 페이지 매김 (0) | 2019.05.22 |