Можно ли предотвратить откат внешнего контекста транзакции даже после исключения, помеченного как выброшенный rollBackFor? - PullRequest
0 голосов
/ 03 июля 2018

Предположим, что процесс регистрации пользователя выглядит так:

@Service
public class UserService {

    @Resource
    private EmailService emailService;
    @Resource 
    private Jmstemplate jmsTemplate;

    @Transactional(rollbackFor = Exception.class)
    public void signUp(User user) {

        //save user to DB, etc

        postSignUp(User user);
    }

    /**
     * Business that not so important
     * suppose this method may throw any exception
     * 
    **/
    public void postSignUp(User user) {
        emailService.sendEmail(user);
        jmsTemplate.sendSignUpEvent(user);
        ...
    }

}

Мы делаем метод signUp () транзакционным. если в методе signUp () возникнет исключение, транзакция будет выполнена.

И, конечно, любое исключение, возникшее в postSignUp (), также приведет к откату транзакции.

Но поскольку логика в postSignUp () была не так важна, мне интересно, как можно предотвратить откат внешней транзакции, даже если в методе postSignUp () было сгенерировано исключение?

1 Ответ

0 голосов
/ 03 июля 2018

Вы пробовали noRollbackFor свойство Transactional?

Это выглядит как:

@Transactional(noRollbackFor=SampleCustomException.class)
...