Comments (3)
참고
- https://mangkyu.tistory.com/292
- https://www.nextree.io/spring-event/
- https://tecoble.techcourse.co.kr/post/2022-11-14-spring-event/
from dev-qna.
포인트 지급 로직을 Event로 처리한 후, 팀원에게 "여기에 비동기처리는 필요 없을까요?" 라는 리뷰를 받았다.
![image](https://private-user-images.githubusercontent.com/98391539/300700224-b2fde529-54c3-4ffe-8752-cf79fee0ee86.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU0MTE2NTQsIm5iZiI6MTcyNTQxMTM1NCwicGF0aCI6Ii85ODM5MTUzOS8zMDA3MDAyMjQtYjJmZGU1MjktNTRjMy00ZmZlLTg3NTItY2Y3OWZlZTBlZTg2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTA0VDAwNTU1NFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAwOTZiOWIwYmIxYTJlNmZjOTZiYWZlMDY3NTBmYzJhMmFmNzcxMWU2MWUxOWY4YWE5NmM3MzI5Y2Q4NDA0N2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.XffsbLt2K2Il4CWAYLWv9-XJL2-VY6sWsH3otLv-hPw)
나는 비동기 처리할 경우 별도의 스레드로 실행되어 다른 트랜잭션에서 실행될 뿐, 더 자세한 내용은 몰랐는데 팀원이 TransactionSynchronizationManager
를 알려주었다. TransactionSynchronizationManager
은 트랜잭션의 정보를 ThreadLocal로 관리하여 동일 스레드 내에서 트랜잭션의 동기화를 도와주는 트랜잭션 동기화 매니저이다.
정리하면 아래와 같다.
1. 비동기로 처리하게 되면 별도의 스레드에서 트랜잭션 실행
2. TransactionSynchronizationManager는 스레드마다 독립적으로 Connection을 관리하기 때문에 다른 스레드는 같은 트랜잭션 사용 불가능
=> 비동기 처리 불가능
from dev-qna.
이 내용을 블로그에 옮겨 적었다! 😁
https://yiseull.tistory.com/31
from dev-qna.
Related Issues (12)
- Querydsl에서 정렬 조건이 QClass의 List 필드라면 어떻게 해야할까? HOT 1
- @Transactional vs save() 둘 중 어느 것을 사용해야 할까? HOT 2
- 비지니스 검증을 할 때 도메인과 서비스 어느 쪽에서 예외를 터뜨려야 할까? HOT 1
- 도메인에서 null 체크 -> @NotNull vs @Column(nullable=false)
- AOP에는 트랜잭션이 작동하지 않는걸까? AOP 내부에서 변경 감지는 못하는걸까? HOT 1
- 트랜잭션 범위, 어디까지 설정해야 할까?
- Redis을 이용한 투표 랭킹 시스템에서 동점자 처리 방법 고민 HOT 1
- 테스트를 쉽게 하기 위해 구현 코드를 변경해도 되는걸까?
- 모킹할 때 테스트 검증에 필요하지 않은 값들은 Mockito ArgumentMatchers로 대체해도 될까? HOT 2
- @SpringBootTest에서 LazyInitializationException 트러블슈팅 HOT 1
- 인수 테스트에서 테스트 격리하기(테스트 데이터 초기화)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dev-qna.