Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Refactor] 공용 메시지 브로커 구현 및 적용 #16

Open
wants to merge 26 commits into
base: develop
Choose a base branch
from

Conversation

codemario318
Copy link
Collaborator

@codemario318 codemario318 commented Jan 21, 2025

🔍️ 이 PR을 통해 해결하려는 문제가 무엇인가요?

  • Play 서비스와 QuizZone 서비스의 강한 결합
  • 이벤트 처리 로직의 중복 및 복잡성
  • 서비스 간 상태 공유 및 동기화 문제

✨ 이 PR에서 핵심적으로 변경된 사항은 무엇일까요?

  • 메시지 브로커 인터페이스 및 구현체 추가
    • MessageBroker: 기본 pub/sub 구현
    • ReactiveMessageBroker: RxJS 기반 반응형 구현
  • Play/Chat 서비스 리팩토링
    • 이벤트 기반 통신으로 전환
    • 서비스 간 결합도 감소
  • 새로운 에러 처리 전략 도입
    • 브로커 레벨 에러 핸들링
    • 구독자별 격리된 에러 처리

🙏 Reviewer 분들이 이런 부분을 신경써서 봐 주시면 좋겠어요

  • ReactiveMessageBroker의 RxJS 활용이 적절한지 검토 필요
  • 브로커의 에러 처리 전략이 충분한지 확인
  • 메시지 타입 정의의 타입 안정성 검토
  • 구독 해제(unsubscribe) 로직의 누수 가능성 점검

자세한 내용은 Wiki - 개발문서 참고해주세요 😄

- Pub/Sub 패턴 적용을 위한 메시지 큐 구현
@codemario318 codemario318 requested a review from a team January 21, 2025 10:16
@codemario318 codemario318 self-assigned this Jan 21, 2025
@codemario318 codemario318 marked this pull request as draft January 21, 2025 10:16
- MessageQueue 구현체 Nest 전역 모듈 등록
- 구현 변경으로 인한 메시지큐 관련 클래스 제거
- 간단한 pub-sub 구현
- 간단한 pub-sub 클래스 chat에 적용
- publish 반환 타입 수정
- 메시지 브로커 클래스에 토픽에 대한 제네릭 타입 추가
- subscribe 메소드 반환값을 unsubscribe 로 변경
- 퀴즈를 떠났을 때 채팅에서도 unsubscribe 되도록 수정
- 브로커 의존성 주입 과정에서 publisher 주입 안되는 문제 수정
- RxJS를 활용한 메시지 브로커 구현
- ReactiveMessageBroker 적용 및 테스트 완료
- 채팅 기능 메시지 보내기 핸들러 형식 수정
- play 웹소켓 응답 처리 pub/sub 적용
- 불필요한 로직 삭제
- 일부 코드 개선
- pub-sub 이름을 broker로 변경
- play, chat 모듈에 변경사항 반영
- 디렉터리 위치 변경
- 유연한 메시지 처리를 위한 Message를 제네릭으로 변경
- Message 제네릭 변경 반영
- 브로커 제네릭 변경으로 인한 메시지 브로드캐스팅 로직 변경
- SendEvent 인터페이스 sender 속성 추가
- SendEvent 인터페이스 변경으로 인한 핸들러 처리 로직 변경
- chat 서비스 브로커 타입 선언 변경
- broker 모듈 공용 모듈로 위치 변경
- message-broker undefined narrowing 추가
- reactive-message-broker.ts error 타입 추가
- 공용 브로커 모듈 내보내기 추가
- broker를 위한 rxjs 의존성 추가
- broker 관련 참조를 shared로 변경
- 생성자 인자를 readonly로 변경
- 모노레포 shared 패키지 rxjs 의존성 추가
- broker 도입을 통한 사용자 정보 의존성 분리
- 누락된 chat 핸들러 복구
@codemario318 codemario318 changed the title [Refactor] 공용 메시지큐 구현 및 적용 [Refactor] 공용 메시지 브로커 구현 및 적용 Jan 23, 2025
@codemario318 codemario318 marked this pull request as ready for review January 23, 2025 14:57
- subscribe의 불필요한 subscriberId 인자 제거
- MessageBroker를 위한 Subscriber 인터페이스 선언
- MessageBroker subscriber 저장을 배열로 변경
- subscriber의 Id를 생성하도록 변경(uuid)
- ReactiveMessageBroker의 subscribe 변경 반영
- playGateway의 broker 변경 사항 반영
- chatService의 broker 변경 사항 반영
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant