Как обрабатывать транзакции с использованием сообщений 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

Другие вопросы по тегам