Сбой транзакции и стремление к операции - PullRequest
0 голосов
/ 03 апреля 2020

Я использую пружинную загрузку с пружинными данными jpa.

@Component
public class NotificationReceiver {

    private final NotificationService service;
    private final NotifMapper mapper;

    @JmsListener(destination = "${mq.notif.queue}")
    public void receiveMessage(NotificationPayload notif) {

        Notification notif = mapper.NotificationPayloadToNotification(notif);

        notif = service.insertNewNotif(notif); //1

        ...

        notif=service.update(notif); // 2

        service.sendMq(notif); // 3

    }

}

На самом деле,

insertNewNotif и update имеют транзакционную аннотацию

, что я хотел бы сделать

  • Если 1 не удастся, я не хочу откатываться, я не хочу делать 2 и 3
  • Если 2 не удастся, я не хочу откат 1 и не хочу сделать 3
  • Если сбой 3, я не хочу откат 1 и 2

Возможно, потребуется изменить

 @Transactional

на

 @Transactional(propagation = Propagation.REQUIRES_NEW) ?

Не уверен, но если я не продолжу работу, если произойдет сбой, нужно будет отследить ошибку хранилища?

Как соблюдать эти критерии?

...