문제 상황
이번 프로젝트에서는 Kafka를 이용하여 SSE(Server-Sent Events) 알림 기능을 분리하였으나, 객체 전달 문제로 인해 알림이 제대로 전달되지 않는 문제가 발생했습니다.
1. 구조 설명
구조:
- Producer 서버: SSE 구독 API를 제공하고 Kafka로 메시지를 전송.
- Consumer 서버: 로그인된 사용자에게 실시간으로 알림을 전송하는 역할.
문제:
- 로그인 시점에 SSE 구독을 Producer 서버에서 진행하고 있었기 때문에, Consumer 서버에서 SSE Emitter 객체를 찾을 수 없어 알림을 전달하지 못함.
2. 발생한 문제와 원인
원인:
- SSE Emitter 객체는 구독 시점에 생성되며, 이를 Consumer 서버에서 관리해야 하지만 Producer 서버에서 구독을 진행하여 Emitter 객체가 Consumer 서버에 전달되지 않음.
- Kafka 메시지를 통해 알림 내용을 전달했지만, Consumer 서버에서 해당 사용자에게 알림을 보낼 수 있는 Emitter 객체를 찾을 수 없는 상태.
3. 해결 방법
해결 방법: