Async, Transactional 별도 사용

h블로그·2021년 9월 10일
0

문제

kafka producer에 콜백 메소드를 담아서 전송하면 콜백 메소드는 비동기로 처리된다.
성공시에 db update 를 진행하려고 했더니, 트랜잭션에 문제가 있었다.

원인

Async와 Transactional 두가지 모두 proxy를 사용한다.
proxy 내부에서 다른 proxy를 사용할 수 없다.
Async 내부에서 Tranasactional을 선언했으니 proxy 내부에서 다른 proxy를 사용하려고 한 것이다.

해결

비동기 스레드 안에서 새로운 스레드가 db update를 진행하도록 구현해야 한다.
db update 부분만 별도 service로 분리해서 구현했더니 해결되었다.

profile
😎🙈🙈🙈🤓

0개의 댓글