티스토리 뷰

Java

Java API 비동기 호출

조용한스택 2021. 12. 22. 02:02

URLConnection

  • 기본 JDK에 포함
  • HTTP 외 여러 프로토콜 제공
  • 다른 라이브러리와 달리 직관적으로 HTTP Method에 대응되지 않음

HttpClient

  • org.apache.http.client에서 제공하는 라이브러리
  • timeout 설정 가능
  • 오직 HTTP 클라이언트 코드를 위한 컴포넌트. 서버측 프로세스는 지원하지 않음
  • HTTPS와 Proxies을 이용한 연결을 지원한다
  • Cookie 핸들링 지원
  • HttpComponent 4.x 부터는 Thread 안정적 기능을 제공

RestTemplate

  • spring 3부터 지원
  • boilerplate code를 줄여준다
  • HttpRequest를 효과적으로 구현한 것이다
  • RestTemplate의 Converter는 내장 messageConverter와 더불어 막강하다
  • AsyncRestTemplate과 마찬가지로 곧 deprecated 될 듯하다
  • JMC : 로컬 서버에 대한 cpu, thread, 메모리를 모니터링 가능
  • Spring 비동기 호출 → AsyncRestTemplate
    • Spring 5, spring boot 2.0부터 deprecated 되었다.. 그래서 WebClient를 사용해야 한다.

WebClient

  • Spring Web Reactive 모듈에 포함되어 있으며, RestTemplate을 대체한다
  • compile 'org.springframework.boot:spring-boot-starter-webflux' 설정 추가
  • 불변
  • Netty의 HttpClient를 기본으로 한다
  • HttpClient httpClient = HttpClient.create().secure(sslSpec -> ...); WebClient webClient = WebClient.builder() .clientConnector(new ReactorClientHttpConnector(httpClient)) .build();
  • Reactive Stream 기반이므로 Mono 혹은 Flux로 리턴값을 받는다.
  • 기본적으로 Non Blocking이다. retrieve 혹은 exchange 후에 block()를 호출하면 blocking 방식이 된다
  • 반환값
    • Mono
      • 0-1개의 결과를 처리하는 Reactor 객체
    • Flux
      • 0-N 개의 결과를 처리하는 Reactor 객체

'Java' 카테고리의 다른 글

Reflection  (0) 2021.12.22
DAO VO DTO Entity  (0) 2021.12.22
lombok.Builder 로 빌더 패턴 사용한 클래스의 필드를 초기화하고 싶다면  (0) 2021.12.22
Effective Java - Generic (Item 26 ~ 33)  (0) 2021.11.06
Generic  (0) 2020.10.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함