티스토리 뷰

카테고리 없음

RSocketConnectorConfigurer 소개

행복[HappY] 2025. 3. 10. 13:55

RSocketConnectorConfigurer 개요

RSocketConnectorConfigurer는 Spring에서 RSocket 클라이언트(RSocketRequester)를 구성할 때 사용되는 인터페이스입니다.
이를 활용하면 커넥션 설정, 보안, 데이터 압축, Keep-Alive 등의 다양한 설정을 세밀하게 조정할 수 있습니다.

 

 

 

1. 주요 역할

RSocketConnectorConfigurer는 RSocketRequester를 생성할 때 내부적으로 사용되는 RSocketConnector를 설정할 수 있도록 도와줍니다.

주요 역할은 다음과 같습니다.

  • 전송(Transport) 설정: TCP, WebSocket, HTTP/2 등 다양한 전송 방식을 설정
  • Keep-Alive 설정: 연결 유지 및 타임아웃 값 설정
  • 보안(Security) 설정: 인증 및 TLS(SSL) 설정
  • 압축(Compression) 설정: 데이터 압축 활성화
  • RSocket 리스너 설정: 커넥션 수립, 종료 시 리스너 등록

 

 

 

2. 사용 방법

1) RSocketConnectorConfigurer 인터페이스 구현

아래 예제는 TCP 기반 RSocket 클라이언트에서 Keep-Alive 및 데이터 압축을 활성화하는 설정을 포함하고 있습니다.

import io.rsocket.core.RSocketConnector;
import org.springframework.messaging.rsocket.RSocketConnectorConfigurer;
import org.springframework.stereotype.Component;

@Component
public class CustomRSocketConfigurer implements RSocketConnectorConfigurer {

    @Override
    public void configure(RSocketConnector connector) {
        connector.keepAlive(Duration.ofSeconds(20), Duration.ofSeconds(90)) // Keep-Alive 설정
                 .reconnect(Retry.backoff(5, Duration.ofSeconds(2))) // 재연결 설정
                 .compressWith(DefaultPayloadCompressor.snappy()); // 데이터 압축 활성화
    }
}

 

2) RSocketRequester와 함께 사용

RSocketRequester를 생성할 때 RSocketConnectorConfigurer를 적용할 수 있습니다.

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.rsocket.RSocketRequester;

@Configuration
public class RSocketClientConfig {

    @Bean
    public RSocketRequester rSocketRequester(RSocketRequester.Builder builder, 
                                             RSocketConnectorConfigurer configurer) {
        return builder
                .rsocketConnector(configurer) // 설정 적용
                .tcp("localhost", 7000); // TCP로 연결
    }
}

 

 

 

3. 주요 설정 옵션

RSocketConnectorConfigurer를 통해 설정할 수 있는 주요 옵션은 다음과 같습니다.

 

1) Keep-Alive 설정

RSocket 연결이 유지되는 동안 주기적으로 Keep-Alive 패킷을 전송하여 연결을 유지합니다.

connector.keepAlive(Duration.ofSeconds(30), Duration.ofSeconds(120));
  • 첫 번째 인자: Keep-Alive 패킷을 보내는 주기
  • 두 번째 인자: 서버 응답이 없을 때 연결을 종료하는 타임아웃

 

2) 재연결(Retry) 설정

네트워크 오류 발생 시 자동으로 재연결할 수 있도록 설정할 수 있습니다.

import reactor.util.retry.Retry;

connector.reconnect(Retry.backoff(3, Duration.ofSeconds(1))); 
  • Retry.backoff(3, Duration.ofSeconds(1)):
    • 최대 3회까지 재시도
    • 1초 간격으로 백오프(backoff) 적용

 

3) 데이터 압축 설정

네트워크 트래픽을 줄이기 위해 RSocket 데이터 압축을 활성화할 수 있습니다.

import io.rsocket.core.DefaultPayloadCompressor;

connector.compressWith(DefaultPayloadCompressor.snappy());
  • DefaultPayloadCompressor.snappy(): Snappy 압축 적용
  • DefaultPayloadCompressor.deflate(5): Deflate 압축 적용 (5는 압축 레벨)

 

4) TLS/SSL 보안 설정

TLS/SSL을 사용하여 보안이 강화된 RSocket 통신을 설정할 수 있습니다.

connector.transport(TlsClientTransport.create("localhost", 7000));

 

 

 

4. 정리

  • RSocketConnectorConfigurer는 Spring에서 RSocket 클라이언트(RSocketRequester)의 설정을 조정하는 인터페이스입니다.
  • Keep-Alive, 재연결(Retry), 데이터 압축, 보안(TLS/SSL) 설정 등을 세밀하게 조정할 수 있습니다.
  • RSocketRequester를 생성할 때 .rsocketConnector(configurer)를 사용하여 설정을 적용할 수 있습니다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함