Как обрабатывать транзакции с использованием сообщений Spring /JMS и базы данных
У меня есть метод, который получает счет, и он создает XML и отправляет этот XML в очередь JMS, а затем сохраняет счет в БД с обновленным статусом, таким как "выставлен счет". Ниже приведен псевдокод, включающий Spring и Hibernate. У меня такой вопрос: является ли сбой в JMS-отправке с сохранением отката в спящем режиме или, если отправка JMS не удалась, как я могу откатить сохранение состояния счета? Это относится к распределенному управлению транзакциями. Какие транзакционные случаи здесь задействованы. Благодарю.
@Transactional(propagation=Propagation.Required)
void processInvoices(invoice ){
String xml = createXML(invoice);
messageService.sendInvoice(xml );
invoice.setStatus("invoiced");
save(invoice);
}
1 ответ
Насколько я знаю и насколько я понимаю из вашего вопроса, вы хотите синхронизировать Hibernate и транзакции JMS. Для этого вам нужно будет использовать JTA для управления транзакциями как в Hibernate, так и в JMS.
Подробнее @ Spring синхронизирует транзакции Hibernate и JMS