Spring WebSocket을 사용하면서 이미지를 같이 받으려고 할때 아마 다음과 같은 에러를 만나볼 수 있습니다.
org.springframework.messaging.simp.stomp.StompConversionException:
STOMP 'content-length' header value 115859 exceeds configured buffer size limit 65536
저도 최근에 STOMP 메시지 전송 중 위와 같은 에러를 마주쳤습니다. 메시지 크기가 너무 커서 내부 버퍼 사이즈 제한을 초과한 경우 발생하는 문제입니다. 로그를 자세히 보면 content-length가 115,859인데, 설정된 버퍼 크기는 65,536이라 초과된 것 상황입니다.
그렇다면 설정된 버퍼크기를 충분히 늘려주면 쉽게 해결할 수 있을것입니다.
방법 1: 버퍼 크기 설정을 늘려주기
가장 간단한 해결 방법은 bufferSizeLimit을 늘려주는 것입니다. WebSocketMessageBrokerConfigurer를 구현한 클래스에서 다음과 같이 설정하면 됩니다:
@Override
public void configureWebSocketTransport(WebSocketTransportRegistration registration) {
registration.setMessageSizeLimit(200 * 1024);
registration.setSendBufferSizeLimit(512 * 1024);
registration.setSendTimeLimit(20 * 1000);
}
방법 2 : 프론트 측에서 처리하기
이건 백엔드에서는 처리하기 힘들때 사용하는 방법입니다.
- 데이터 압축: 메시지를 Base64 인코딩 없이 전송하거나, GZIP 등의 압축 방식으로 줄이기
- 대용량 데이터 분할 전송: 여러 개의 작은 메시지로 쪼개서 전송
- 불필요한 데이터 제거: JSON 구조라면 필요 없는 필드 제거
저는 일단 백엔드 개발자인 제가 버퍼 크기를 늘리는걸로 결정하였습니다. 보다 최적화를 하려면 압축해서 보내는게 좋아보입니다.
저희 프로젝트는 이미지 자체가 많이 전송되지 않는 프로젝트라 1번으로 결정하였습니다.
'Spring' 카테고리의 다른 글
[Spring] Spring @Configuration 란? (0) | 2025.04.22 |
---|---|
[KAFKA] Spring Boot로 KAFKA 사용해보기 (0) | 2025.04.02 |
[해결 방안] Spring Gateway를 통해 Stomp를 설정했을때 헤더가 두개오는 문제 해결방안 (1) | 2025.03.31 |
[Spring] MongoDB와 JPA Repository 충돌 해결 (0) | 2025.02.09 |
[개선사항] Spring Events을 활용하여 결합도 낮추기 (0) | 2024.12.23 |