반응형
개요
Spring Webflux의 WebClient의 설정을 정리하기 전
HTTP 관련 구현체인 Netty의 HttpClient 설정을 우선 정리
기본적인 설정만 정리
HttpClient Configuration
Config | Desc |
disableRetry(boolean disableRetry) | request 실패 시 retry 여부 |
doOnRedirect(BiConsumer<? super HttpClientResponse,? super Connection> doOnRedirect) | redirect 응답 시 Consumer 설정 |
doOnConnected(Consumer<? super Connection> doOnConnected) | connection success시 consumer 설정 |
followRedirect(boolean followRedirect) | redirect 시 follow 여부 |
keepAlive(boolean keepAlive) | keepAlive 설정 |
http2Settings(Consumer<Http2SettingsSpec.Builder> http2Settings) | http2 관련 세팅 |
responseTimeout(Duration maxReadOperationInterval) | connection 이후 response에 걸리는 총 시간에 대한 설정 |
secure(SslProvider sslProvider) | SSL 관련 설정
|
websocket(WebsocketClientSpec websocketClientSpec) | 웹소켓 관련 설정 |
그 외 hearders, doOnRequest, doOnResponseError 등 다수의 설정들이 존재
ClientTransport Configuration
Config | Desc |
channelGroup(ChannelGroup channelGroup) | 채널 그룹 설정 |
doOnChannelInit(ChannelPipelineConfigurer doOnChannelInit) | 채널 pipeline init 시 동작할 설정 |
option(ChannelOption<O> key, @Nullable O value) | 채널옵션 설정 (후술) |
runOn(EventLoopGroup eventLoopGroup) | 이벤트 그룹 설정 |
ChannelOption
io.netty.channel.ChannelOption<T>
Config | Desc |
RCVBUF_ALLOCATOR | 수신 버퍼 allocate 사이즈 지정 |
CONNECT_TIMEOUT_MILLIS | 커넥션 타임아웃 |
MAX_MESSAGES_PER_READ | 한번에 읽을 최대 메시지 사이즈 설정 |
SO_SNDBUF, SO_RCVBUF | 송/수신 버퍼의 크기 조정 (UDP에서 사용) |
Conclusion
네트워크 관련 설정을 할 수 있다.
주요 설정으로
- SSL Provider를 통한 SSL 설정
- responseTimeout 설정
- Connection Timeout 설정
- read / write Timeout 설정 (doOnConnected에 handler를 추가해서)
- DNS resolver 관련 설정
- Buffer size 관련 설정
Timeout 관련해서 connection, read, write는 설정할 만하다. 다만 response Timeout의 경우 특별한 이유가 없는 한 Client 입장에서 설정하는 건 문제의 여지가 많을 듯하다.
DNS 관련 설정으로 resolver 설정을 DEFAULT로 안 하면, 도메인에서 ip를 찾지 못하는 이슈가 있었다.
기타 설정들은 특별한 이유가 없는 한 default로 하는 게 최적일 것으로 보인다.
REFERENCE
https://projectreactor.io/docs/netty/release/api/reactor/netty/http/client/HttpClient.html
반응형
'개발 일지' 카테고리의 다른 글
Expand Kafka Cluster (0) | 2023.06.13 |
---|---|
Webclient 동작 원리 및 Configuration (0) | 2023.05.30 |
Kafka Connect 사용성 검토 (0) | 2023.05.24 |
Kafka Schema Registry (0) | 2023.05.23 |
Apache Avro 란 (2) | 2023.05.22 |