๋ฐ˜์‘ํ˜•

โญ๏ธ ์ด์Šˆ์ƒํ™ฉ) WebClient ์œผ๋กœ API ํ†ต์‹ ์„ ํ•˜๋Š” ์ƒํ™ฉ์— ๊ฒฐ๊ณผ๊ฐ’์ด ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ํ˜ธ์ถœ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•จ
- ์˜ˆ๋ฅผ๋“ค๋ฉด API ํ†ต์‹ ์„ ์œ„ํ•ด webclient ์„ 1๋ฒˆ ํ˜ธ์ถœ โ†’ N ๋ฒˆ์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋กœ ๋…ธ์ถœ์ด ๋œ ์ƒํ™ฉ (โ‰๏ธ)

โ†“โ†“โ†“ ์•„๋ž˜๋Š” ์ž˜๋ชป ๋งŒ๋“  JAVA ์ฝ”๋“œ์˜ ์ผ๋ถ€์ž„.
WebClient ์„ ์ž˜ ๋ชจ๋ฅด๊ณ ! Non-blocking/Asynchronous ์˜ ํŠน์„ฑ์„ ์ƒ๊ฐ ๋ชปํ•˜๊ณ ! subscribe, block ์„ ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ํ˜ธ์ถœํ•œ ์ƒํ™ฉ (ใ… ใ… )

// 1) testmethod ๋Š” API ํ†ต์‹  ๋ฉ”์†Œ๋“œ ์˜ ์ผ๋ถ€ 
public Mono<dto> testmethod() { 
    Mono<dto> test = WebClient.builder()..build().post().exchangeMono()..;
    return test;
}


// 2) testmethod ์„ ํ˜ธ์ถœํ•œ ์˜์—ญ 
...
Mono<dto> dto = testmethod();

dto.subscribe(res -> {โ€ฆ}, error -> {โ€ฆ});
dto.subscribe(res -> {โ€ฆ}, error -> {โ€ฆ});
dto.block();
dto.block();
dto.block();

// ์ด ๊ฒฐ๊ณผ testmethod()์€ 1๋ฒˆ ํ˜ธ์ถœํ•˜์˜€์œผ๋‚˜ ๊ทธ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๋Š” 5๋ฒˆ์œผ๋กœ ํ˜ธ์ถœ๋œ ์ƒํ™ฉ. Non-blocking...async..์˜ ์ƒํ™ฉ...

 

โ“โ“โ“โ“์™œโ“โ“โ“โ“

dto.block() ์˜ ๊ฒฝ์šฐ, mono ๊ตฌ๋… ํ›„ ์‘๋‹ต์ด ์˜ฌ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆผ! 
๊ทธ ์‚ฌ์ด, dto.block() ์„ ๋˜ ์„ ์–ธ์„? ํ•˜์˜€๋‹ค๋ฉด ์Šค๋ ˆ๋“œ๊ฐ€ 2๊ฐœ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ƒํ™ฉ์ด ๋˜๋ฒ„๋ฆฌ๋Š”๊ฒƒ? 

dto.subscribe(res...) ์˜ ๊ฒฝ์šฐ๋„ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์„ ์–ธ๋˜๋ฉด ๊ฐ๊ฐ subscribe ๋‚ด์—์„œ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚จ. = (๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ - ํ•จ์ˆ˜ํ˜•) x ์—ฌ๋Ÿฌ๊ฐœ = ์ฝœ๋ฐฑ๋Š‘๋‚Œ

 
 
๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋น„๋™๊ธฐ ํŠน์„ฑ์„ ์ž˜ ์ดํ•ดํ•˜์—ฌ ๋กœ์ง์„ ๊ตฌํ˜„ํ•ด์•ผํ•จ.

โ—๏ธsubscribe, block ์„ ๊ฐ™์ด ํ˜น์€ ์—ฌ๋Ÿฌ๊ฐœ!!!!! ์„ ์–ธํ•˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ (๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ํ˜ธ์ถœํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ๋ชจ๋ฅผ๊นŒ)
โ—๏ธsubscribe (ํ•จ์ˆ˜ํ˜•?)์œผ๋กœ ๋ฐ›์•˜๋‹ค๋ฉด ์ ˆ์ฐจ์ง€ํ–ฅํ˜•์˜ ํ”„๋กœ์„ธ์Šค์™€๋Š” ์ƒ๊ด€์—†์ด subscribe ๋‚ด์—์„œ ์ฒ˜๋ฆฌํ•ด๋„ ๋˜๋Š”๊ฒƒ์ธ์ง€ ์ž˜ ๊ณ ๋ฏผํ•ด๋ณด๊ธฐ.
(non-blocking ํŠน์„ฑ์„ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด webclient ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์•„๋‹Œ๊ฐ€ ์‹ถ์Œ )

 

๋ฐ˜์‘ํ˜•

+ Recent posts