Backpressure Example ์ฝ๋ ์ง๋ฌธ๋๋ฆฝ๋๋ค
์ ๋ ์ด๊ฑฐ์ ๋ํด์ ๋ง์ ๊ณ ๋ฏผ์ด ์์๋๋ฐ ์ ๊ฐ ์ฐพ์๋ธ ํด๋ต์ ์๋์ ๊ฐ์ต๋๋ค.๋จผ์ ์ง๋ฌธ ์ฃผ์ ๋ถ๋ถ์ ์ฝ๋์์๋ ์๋ฌ๊ฐ ๋ฐ์ํ ์ํฉ์ด ๋ง์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ ๋ก๊ทธ์์ ์๋ฌ๊ฐ ๋ณด์ด์ง ์๋๊ฐํ๋ฉด ์์ง ์๋ฌ๊ฐ ๋ก๊น
์ด ์ถ๋ ฅ๋์ง ๋ชปํ ์ํฉ์ผ๋ก ๋ณด์ฌ์ง๋๋ค.์๋์ TImeUitls.sleep(5000L) ์ ๋๋ฆฌ๊ฒ๋๋ฉด ์ ๊ฐ ์ฒจ๋ถํ ์ฌ์ง์ฒ๋ผ OnNext() ๊ฐ ์ ๋ถ ์ถ๋ ฅ๋ ์ดํ์ error ๋ก๊ทธ๊ฐ ์ฐํ๊ฒ ๋ฉ๋๋ค.(์ฌ์ง)๋ค๋ฅธ ์ฐ๋ ๋์์ ๋์ํ๋ ์ค๊ฐ์ ๋ฐ์ํ๊ณ ๋ก๊ทธ๋ฅผ ์ ์ด์ผํ๋๊ฑฐ์๋๋? ๋ผ๋ ์๋ฌธ์ด ๋์ค์๋ ์๋๋ฐ GPT๋ฅผ ํตํ ๋ต๋ณ์
๋๋ค.์์ธ๋ parallel-2 (emit ์ชฝ) ์ค๋ ๋์์ ๋ฐ์ํ์ง๋ง,subscribe()์ ๋ฑ๋ก๋ onError ์ฝ๋ฐฑ์ parallel-1 (consume ์ชฝ) ์์ปค์์ ์คํ๋๋ ๊ฒ.์ฆ:onBackpressureError() โ queue.offer() ์คํจ โ ์์ธ ๋ฐ์ โ ์ด๊ฑด emit ์ชฝ (parallel-2)์ด ์์ธ๋ downstream์ผ๋ก ์ ํ๋จ๋ฆฌ์กํฐ๋ ์ ํ๋ ์์ธ๋ฅผ subscribe(onNext, onError)์์ ์ฒ๋ฆฌํจsubscribe์์ ์คํ๋๋ onError๋ publishOn() ์ดํ์ด๋ฏ๋ก consume ์์ปค (parallel-1)์์ ์คํ๋ผ๊ณ ํ๋ค์. ์ ๋ ๊ณต๋ถํ๋ฉด์ ๊ถ๊ธํ๋ ๋ด์ฉ์ด์๋๋ฐ ๋น์ทํ ์ง๋ฌธ์ธ๊ฒ ๊ฐ์์ ๋ต๋ณ๋จ๊น๋๋ค.