문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
java:guava:eventbus [2017/06/23 07:16] kwon37xi |
java:guava:eventbus [2021/10/28 16:39] (현재) kwon37xi [Guava Event Bus] |
||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| ====== Guava Event Bus ====== | ====== Guava Event Bus ====== | ||
| * 매우 간단하고 쉬운 [[java: | * 매우 간단하고 쉬운 [[java: | ||
| + | * [[: | ||
| * [[https:// | * [[https:// | ||
| * [[http:// | * [[http:// | ||
| 줄 7: | 줄 8: | ||
| ===== 왜 필요한가 ===== | ===== 왜 필요한가 ===== | ||
| + | * 개발을 하다보면 본질적인 비즈니스 로직(예: 사용자 가입. 사용자정보 검증 및 DB 저장)과 비본질적인 비즈니스에 대한 후처리 로직(예: 가입 축하 Email발송, | ||
| * 실제 비즈니스 로직과 그 후처리 로직을 완전히 분리하여 비즈니스 로직을 간결하게 유지하며 코드 유지보수성을 높인다. | * 실제 비즈니스 로직과 그 후처리 로직을 완전히 분리하여 비즈니스 로직을 간결하게 유지하며 코드 유지보수성을 높인다. | ||
| * 비즈니스 로직과 후처리 로직이 섞여 있으면 후처리 로직에서 발생하는 예외 등으로 인해 비즈니스 로직이 영향을 받을 수 있는데 Event Bus를 사용하면 서로간의 영향을 분리할 수 있다. | * 비즈니스 로직과 후처리 로직이 섞여 있으면 후처리 로직에서 발생하는 예외 등으로 인해 비즈니스 로직이 영향을 받을 수 있는데 Event Bus를 사용하면 서로간의 영향을 분리할 수 있다. | ||
| 줄 86: | 줄 88: | ||
| ===== 주의할 점 ===== | ===== 주의할 점 ===== | ||
| - | * 특별한 이유가 없다면 '' | + | * Guava EventBus 는 메시지 객체의 Type 검사를 하지 않기 때문에 쉽게 잘못된 객체를 메시지로 던지는 실수를 할 수 있다. |
| + | * 트랜잭션이 연결된 쓰레드에서 이벤트가 발생할 경우, 만약 이벤트 버스에서 오류가 발생하면 해당 트랜잭션 전체가 롤백될 수 있다. | ||
| * Spring 연동시 Listener의 '' | * Spring 연동시 Listener의 '' | ||
| + | * Spring 에서는 그냥 사용하지 말고, [[springframework: | ||
| * 따라서 EventBus 선언과 '' | * 따라서 EventBus 선언과 '' | ||
| + | * 특별한 이유가 없다면 '' | ||
| * '' | * '' | ||
| * subscribe 메소드에서 예외를 발생시키지 말도록 한다. EventBus가 예외를 로깅해주긴 하지만 그것에 의존하지 말 것. | * subscribe 메소드에서 예외를 발생시키지 말도록 한다. EventBus가 예외를 로깅해주긴 하지만 그것에 의존하지 말 것. | ||
| * '' | * '' | ||