SpringJPA: Сохранить в одной теме, читать в другой - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть услуга TicketSend, которая должна отправлять Билеты. Поскольку рассылка может занять некоторое время, я хочу отправить их асинхронно c. В основном у меня есть

private void processTickets(MyParm params) {
   ....
   ticket.saveIntoDB();
   new Thread(() -> mailQueue.sendMails()).start()
}

с

public class Ticket
    @Transactional
    public synchronized void saveIntoDB() {
      ....
      final TicketRepository myRepro = BeanUtil.getBean(TicketRepository.class);
      myRepro.saveAndFlush(mailInternal);
      ...
    }
}

и

public class MailQueue {
    @Autowired
    private TicketRepository ticketRepro;

    @Transactional(isolation = Isolation.READ_UNCOMMITTED)
    public synchronized void processTicketQueue() {
        final LocalDateTime now = LocalDateTime.now();
        final List<Ticket> lstTickets = ticketRepro.findPending(now);
}

Так что я могу правильно сохранить Ticket в базе данных. Когда я читаю содержание БЕЗ new Thread(()->..., весь процесс работает. Но я хочу отправить без дальнейшего ожидания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...