Project/개인프로젝트

Project/개인프로젝트

TransactionSynchronizationManager를 사용해 Transaction 이후에 Event 등록하기

Message기반의 이벤트 처리를 위해 Spring Integration을 적용하였습니다. Command는 DB를 조작할때 사용했고, Event는 DB이후에 데이터를 처리할때 사용하려고 합니다. 원하는것은 DB관련 로직의 Transaction이 성공적으로 커밋되면 Event를 발행하여 Event채널로 보내는 것입니다. 🎯데이터 베이스의 Trigger와 비슷한 개념입니다! 검색해보니 TransactionSynchronizationManager가 동기화 작업을 등록하고 이후의 처리한다는 것을 알았고 바로 적용해 보았습니다. 전체 흐름도 트랜잭션 동기화 하나의 실행 단위에서 모든 작업은 모두 성공하거나 실패해야 합니다. 이것을 원자성이라고부릅니다. 원자성을 지킬수 있게 하나의 Connection으로 모든 작업..

Project/개인프로젝트

ThreadLocal 초기화 에러

ThreadLocal을 사용하여 메세지 기반의 이벤트 처리를 하고 있었습니다. Command가 성공하면 ThreadLocal에 Event가 등록되고 Aop를 사용하여 Transaction이 성공될때만 ThreadLocal에 있는 Event를 가져와 처리하는 로직입니다. 하지만 예상치 못한 에러를 발견하였습니다. public class Events { private static ThreadLocal eventThreadLocal = new ThreadLocal(); private Events() { throw new IllegalStateException("Do not Initialize."); } public static void register(T event) { if (event == null) { ..

Sol b
'Project/개인프로젝트' 카테고리의 글 목록 (3 Page)