我想在发生 JpaOptimisticLockingFailureException 时重试事务服务方法
当我使用 @Retryable 注释注释服务方法时
@Retryable(value = JpaOptimisticLockingFailureException.class, maxAttempts = 3, backoff = @Backoff(delay = 500, maxDelay = 1000))
Account create(AccountDtoCreate dto);
并且服务方法执行以下逻辑
@Transactional
public Account create(AccountDtoCreate dto) {
Account account = mapper.map(dto, Account.class);
Schema schema = schemaService.getByCode(dto.getSchemaCode());
account.getSchemas().add(schema);
Customer customer = customerService.findOrCreate(dto.getCustomer());
account.setCustomer(customer);
Account savedAccount = repository.save(account);
repository.flush();
return savedAccount;
}
}
我一次执行 2 个请求(创建发生 JpaOptimisticLockingFailureException 的情况)。
提交第一个事务,第二个抛出 JpaOptimisticLockingFailureException 并重试。
插入客户时重试尝试失败,而不是调用 findOrCreate 方法,甚至是 getByCode 方法
是否可以使其正确重试?