API, 채팅, 단체 채팅, 푸시알림 서버
Spring websocket chatting server(3) - 여러대의 채팅서버간에 메시지 공유하기 by Redis pub/sub
긱사생 채팅 시스템 설계
사용 기술
채팅 서버가 하나일 시에 - Stomp
채팅 서버가 여러개 일 시에 - redis pub/sub
메시지 큐
메시지 큐를 사용해야 하는 이유
채팅 시스템을 동기식 요청-응답 방식으로 처리하게 되면, 끊임없이 메시지를 주고받는 채팅시스템에 유연하게 대처하지 못하게 된다. 수백명의 사람이 채팅방에 들어와 있을 때, 한 사람의 네트워크 상태가 좋지 않아서 그 사람이 보낸 메시지가 제대로 처리되지 않고 있는 상황이 발생하면 이로 인하여 나머지 수백명의 사람이 해당 메시지의 완전한 처리에 대한 응답이 올 때가지 메시지를 전송하지 못하게 된다.
@Getter
@Setter
public class ChatRoom {
private String roomId;
private String name;
public static ChatRoom create(String name) {
ChatRoom chatRoom = new ChatRoom();
chatRoom.roomId = UUID.randomUUID().toString();
chatRoom.name = name;
return chatRoom;
}
}
deliveryMessage |
---|
deliveryMessageId |
messageType(Enum Class - ENTER, LEAVE, TALK) |
roomId; |
sender |
Message |
Spring websocket chatting server(4) - SpringSecurity + Jwt를 적용하여 보안강화하기