-
2021.11.16 기록장TIL 2021. 11. 14. 18:24
ToDo
- cs 50 https://www.edwith.org/cs50/lecture/22797/?isDesc=false
- 북마크 읽기, 정리
Done
- 이메일 추가 위치 고민
- cs 50 https://www.edwith.org/cs50/lecture/22797/?isDesc=false
Weekly goal
- 책 읽기
- 영어 레퍼런스 읽기
sms, email send
회원 가입이나 특정 행동을 했을 경우 event가 발생해야 하는 경우가 종종 있다.
모두 같은 transaction에 묶여서 실행되면 골치 아프다. 메일 발송 서버가 터졌을 때 회원 가입이 불가능해지는 참사가 있을 수 있겠다. 메일 발송 시 예외 발생 -> 트랜잭션 롤백
위와 같은 이유와 대기 시간문제로 대부분은 비동기로 메일 등을 발송한다.
자식 스레드에서 예외가 나도 메인 스레드의 save는 정상적으로 동작한다.
GitHub - HomoEfficio/dev-tips: 개발하다 마주쳤던 작은 문제들과 해결 방법 정리
개발하다 마주쳤던 작은 문제들과 해결 방법 정리. Contribute to HomoEfficio/dev-tips development by creating an account on GitHub.
github.com
비동기로 몇 가지 문제를 해결했지만 회원 가입이 완료되지 않았을 경우, 즉 중간에 sql 오류 등이 있었다면 이메일 발송은 되지 않아야 한다.
다시 말해 우리가 원하는 것은 트랜잭션이 정상 종료되고 메시지가 보내지는 것이다.
spring은 너무나 좋은 프레임 워크이기에 event에 관한 설정들이 이미 존재한다.
이벤트를 트랜잭션 안에서 발생시키고
핸들러는 커밋이 된 후에 작동하게 된다.
이 부분의 동작 원리는 더 공부해 봐야겠다.
service.class event.class 리스너도 동기적으로 작동하기에 @Asyn을 붙여 비동기로 작동하게 하면 더 빠르게 동작할 수 있다.
Handler.class https://cheese10yun.github.io/event-transaction/
ApplicationEventPublisher 기반으로 강결합 및 트랜잭션 문제 해결 - Yun Blog | 기술 블로그
ApplicationEventPublisher 기반으로 강결합 및 트랜잭션 문제 해결 - Yun Blog | 기술 블로그
cheese10yun.github.io
How can I use Spring Integration to only send a message if my transaction finishes successfully?
I am in the process of learning Spring Integration and using it to implement a basic email service in Grails. What I want to be able to do is call my email service but only have the email be sent i...
stackoverflow.com
'TIL' 카테고리의 다른 글
2021.11.18 기록장 (0) 2021.11.17 2021.11.17 기록장 (0) 2021.11.16 2021.11.14 기록장 (0) 2021.11.11 2021.11.03 기록장 (0) 2021.11.03 2021.11.02 기록장 (0) 2021.11.02