Project/배드민턴의 모든 것

(4) 채팅 개발 - kafka 사용

예림밈 2025. 4. 24. 18:04

📝 이번 포스팅은 본격적으로 Kafka를 사용하고자 한다.



우선 앞서 살펴본 채팅 요구사항에 의하면 채팅은 DM, 모임, 운동 으로 3가지로 나뉜다.

지난 포스팅으로 Kafka에 대해 알아봤으니 이번에는 본격적으로 어떻게 사용할 지 정하려고 한다.

1. TOPIC

사전에 팀원들과 함께 Kafka 정의서를 작성하였다. TOPIC은 말 그대로 해당 토픽에 대해 Publisher가 발행하면 그 토픽을 구독한 Consumer가 해당 메시지를 소비하게 된다.

채팅방 Type이 3가지이므로 Topic 역시 해당 Type에 따라 구성하였다.

2. EXERCISE TOPIC

  • EXERCISE_CREATED : 운동 채팅방 생성
  • EXERCISE_DELETED : 운동 채팅방 삭제
  • EXERCISE_COMPLETED : 운동이 완료될 경우 운동 채팅방 삭제
  • EXERCISE_USER_PARTICIPATED : 운동 채팅방에 유저 추가
  • EXERCISE_USER_CANCELLED : 운동 채팅방에 유저 방출
  • EXERCISE_USER_ROLE_CHANGED : 운동 채팅방에서 유저 권한 변경

3. CLUB TOPIC

  • CLUB_CREATED : 모임 채팅방 생성
  • CLUB_USER_CREATED : 모임 채팅방에 유저 추가
  • CLUB_USER_CANCELLED : 모임 채팅방에 유저 방출
  • CLUB_DELETED : 모임 채팅방 삭제
  • CLUB_UPDATE_ROLE : 모임 채팅방에서 유저 권한 변경

4. DM TOPIC

  • DM_CREATED : 1:1 채팅방 생성
  • DM_DELETED : 1:1 채팅방 삭제

5. TOPIC을 정했으니 실제 코드로 구현해보자.

  1. KafkaProperties.java
    static으로 선언하여 해당 토픽들을 저장하였다.
  2. 운동이 생성되면 EXERCISE_CREATED 으로 KafkaTemplate를 사용하여 토픽을 전송한다.
  3. @KafkaListener를 통해 해당 토픽에게 이벤트가 발행되면 그 이벤트를 수신 받아 해당 운동 채팅방 정보를 받은 것을 토대로 운동 채팅방을 생성한다.

다른 기능들도 마찬가지로 구현하면 완료이다. Kafka 기본적인 설정은 생략했는데, 추후 시간이 된다면 같이 업로드 하려고 한다!

'Project > 배드민턴의 모든 것' 카테고리의 다른 글

(3) 채팅 개발 - Kafka 도입  (0) 2025.04.24
(2) 프로젝트 요구사항 정리  (0) 2025.04.24
(1) 프로젝트 소개  (0) 2025.04.24