[Spring] 테스트 코드: @MockBean으로 @EventListener 검증하기
·
Spring/테스트 코드
테스트 코드를 통해 스프링 이벤트 리스너의 반응을 검증해 보자 📌 서론 스프링에서 Event-driven 아키텍처로 설계를 했을때 이벤트가 발행되면 리스너가 올바르게 반응하는지 테스트를 통해 검증하는 것은 매우 중요한 과정이라고 생각한다. 이번 포스트에서는 레시피를 생성하면서 스프링 이벤트(RecipeCreationEvent)를 발행했을 때 이 이벤트를 구독하고 있는 saveIngredientsIntoMongo 메서드가 제대로 호출되어 동작하는지 검증하는 테스트 코드를 작성하는 방법을 알아보자 1. 스프링 이벤트 리스너 코드 이해하기 아래의 코드는 설명을 이해하기 위해 알아야 할 SpringEventListener 클래스다. @Slf4j @Component @RequiredArgsConstructor p..
MSA 서버 간 통신: SNS의 MessageAttributes로 완벽한 Zeropayload 전략 구현하기
·
MSA
우리 팀은 MSA에서 SNS를 사용하여 서버 간 통신을 할 때 어떻게 완전한 Zeropayload를 적용했는지 소개한다. 우리 팀은 MSA 아키텍처를 구성하면서 Zipkin을 사용하여 분산추적을 설계했고 그 과정은 traceId를 SNS메시지를 통해 서로 주고받아서 추적하도록 설계했는데 여기에서 무언가 찝찝함이 계속 느껴졌다. 왜냐하면 지금 설계한 아키텍처에서는 Zeropayload정책이 지켜지지 않은 것 같았기 때문이다. 최소한이면서 꼭 필요한 정보만 담는 것이 Zeropayload 정책인데 나는 message안에 memberId라는 값 1개만 넣어서 메시지를 발행하는 것이 아니라 traceId를 같이 담아서 보내줘야만 했다. 이런 상황을 해결해보고자 다른 기업이나 지식 공유자 분들께서는 어떤 방식으로..