Выполнение HTTP-вызова из приложения Java в сочетании с менеджером транзакций Spring

Вот ситуация. У меня есть приложение, которое отлично работает с менеджером транзакций, который я использую. что мне нужно сделать, это опубликовать некоторую информацию в другом приложении в виде http-вызовов на определенных этапах. Я хочу, чтобы HTTP-вызовы выполнялись только после успешного завершения транзакции. И если транзакция по какой-то причине не удалась (какое-то исключение), то http-вызов не должен выполняться.

Любые предложения о том, как это можно сделать?

есть ли способ, где в ходе моего кода я могу зарегистрировать эти http-вызовы, и когда менеджер транзакций успешно завершит работу, эти http-вызовы будут выполнены.


person prithvikg    schedule 02.05.2013    source источник


Ответы (2)


Spring предоставляет простой способ обработки событий обратного вызова через Синхронизация транзакций. Это регистрирует перехватчики для различных событий транзакции (После фиксации, По завершении и т. д.).

Вот связанный пост, посвященный вашей проблеме. Вот другая ссылка.

person Santosh    schedule 02.05.2013
comment
Спасибо!! Посмотрю, а там как пойдет!! - person prithvikg; 02.05.2013

Не выполняйте вызов http напрямую, а (в транзакции JTA) отправьте сообщение в JMS/XA. Таким образом, сообщение будет доступно потребителям только после фиксации транзакции.

Затем добавьте потребителя HTTP, который принимает сообщение и выполняет HTTP-вызов. В соответствии с семантикой JMS/XA он будет получать сообщения только о совершенных транзакциях у отправителя.

Если вам нужен бесплатный менеджер транзакций JTA, посетите https://www.atomikos.com.

Лучший

Гай Пардон

person Guy Pardon    schedule 28.11.2018