Переместить HTTP-вызовы за пределы транзакции в Springboot - PullRequest
0 голосов
/ 24 февраля 2020

У нас есть проект в Kotlin и springboot в качестве основы. В нашем классе обслуживания у нас есть куча кода, где у нас есть несколько вызовов http внутри метода, помеченного @Transactional.

Мне нужно переместить вызовы http вне транзакции, так как это может создать проблему производительности.

Код выглядит примерно так:

@Transactional
Method1() {
   “HTTP Call”
    Saving to DB
    “Call to another service B()”
}

И внутри этого service B мы называем Method2()

Method2() {
 Bunch of operations and then it further Saves few objects to DB.
}

Так что в основном @Transactional также заботится обо всех вложенных операциях с БД.

Есть предложения, как go узнать об этом изменении? Какие стратегии могут быть использованы для достижения этой цели?

Заранее спасибо!

1 Ответ

0 голосов
/ 27 февраля 2020

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

Method1() {
   “HTTP Call”
    TransactionTemplate.execute() {        // used this for the transaction management.
      Saving to DB
   } 
    “Call to another service B()”
}

И затем в службе B

Method2() {
    “Another http call”
    TransactionTemplate.executewithoutResult(){    // used TransactionTemplate.executewithoutResult because this time I did not want the transaction to return me the result. 
         Saving to DB
   } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...