У меня есть услуга 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(()->...
, весь процесс работает. Но я хочу отправить без дальнейшего ожидания.