이번 강의에서는 RabbitMQ를 활용하여 Accounts 마이크로서비스가 Message 마이크로서비스로 이벤트를 트리거하는 비동기 통신을 데모로 보여줍니다. 이 과정을 통해 RabbitMQ가 어떻게 마이크로서비스 간의 중개자 역할을 수행하는지 확인할 수 있습니다.
docker run
명령어를 사용하여 컨테이너를 시작합니다.docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
이 명령어를 실행하면 Docker에서 RabbitMQ 컨테이너가 실행됩니다. -d
옵션은 백그라운드 모드로 실행되도록 합니다.
http://localhost:15672
로 접속하여 RabbitMQ의 관리 콘솔에 접근할 수 있습니다. 기본 로그인 정보는 guest/guest
입니다.Config Server 시작: Config Server를 먼저 시작하여 다른 마이크로서비스들이 필요한 설정을 로드할 수 있도록 합니다.
Eureka Server 시작: Eureka Server를 시작하여 마이크로서비스들이 레지스트리에 등록될 수 있도록 합니다.
Accounts 및 Message 마이크로서비스 시작: Accounts 및 Message 마이크로서비스를 각각 시작합니다. 이때, AccountsApplication
과 MessageApplication
을 디버그 모드로 실행합니다.
Keycloak 서버 시작: 보안 검증을 위해 Keycloak 서버도 시작합니다. 이를 통해 토큰 기반 인증을 처리합니다.
Exchanges
와 Queues
섹션을 확인합니다. 여기서 send-communication
이라는 exchange와 send-communication.message
라는 queue가 생성되었는지 확인합니다. 이는 Accounts 마이크로서비스의 application.yml
에서 정의한 바인딩에 따라 자동으로 생성된 것입니다.Postman 설정: Postman에서 Accounts_POST_ClientCredentials
API를 호출하여 계좌 생성 요청을 보냅니다. 요청을 보내기 전에 Keycloak에서 올바른 클라이언트 ID와 시크릿을 사용하여 액세스 토큰을 발급받아야 합니다.
이벤트 트리거 확인: 계좌 생성 요청이 성공하면, Accounts 마이크로서비스는 RabbitMQ로 메시지를 전송하고, 이 메시지는 Message 마이크로서비스로 전달됩니다. 이 과정에서 계좌 생성 요청이 완료되는 동안 메시지 마이크로서비스의 응답을 기다리지 않으므로 비동기 통신이 성공적으로 이루어졌음을 확인할 수 있습니다.
Breakpoints 설정 및 디버깅: Message 마이크로서비스의 함수에 breakpoint를 설정하여 비동기 통신이 어떻게 이루어지는지 디버깅합니다. 이때, Accounts 마이크로서비스는 메시지를 RabbitMQ로 전송한 후 즉시 응답을 반환하며, Message 마이크로서비스는 나중에 이 메시지를 처리하게 됩니다.
로그 확인: 로그를 통해 메시지가 성공적으로 전송되고 처리되었는지 확인합니다. 또한, 비동기 통신이 어떻게 구현되었는지 로그를 통해 확인할 수 있습니다.
이제 Message 마이크로서비스가 이메일과 SMS를 전송한 후, 다시 Accounts 마이크로서비스로 이벤트를 전송하여 해당 작업이 완료되었음을 알리는 기능을 구현해야 합니다. 이를 통해 양방향 비동기 통신이 가능해집니다.
이번 강의에서는 RabbitMQ를 활용하여 Accounts 마이크로서비스가 Message 마이크로서비스로 비동기 이벤트를 트리거하는 과정을 시연했습니다. 이 과정에서 비동기 통신의 중요성과 Spring Cloud Stream을 통한 메시지 브로커와의 통합 방법을 배웠습니다. 다음 강의에서는 이 양방향 비동기 통신을 구현하여 전체 프로세스를 더욱 강화할 것입니다.