โญ๏ธ ์ด์์ํฉ) 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 ์ ์ฌ์ฉํ๋๊ฒ์ด ์๋๊ฐ ์ถ์ )
'๊ฐ๋ฐ > java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[java] ๊ฐ์ฒด์งํฅ ๋ชจ๋ธ๋ง (0) | 2024.06.24 |
---|---|
[RxJava] ๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ (0) | 2022.05.02 |
java - call by value, call by reference (0) | 2021.07.11 |
์๋ฐ-๋๋ค(lambda) (0) | 2021.05.28 |
ํ๋ก์ธ์ค / ์ค๋ ๋ (0) | 2021.05.26 |