Hibernate-reactive: ReactiveStreams ๋ฐ Java 9 Flow API ์ง€์›

์— ๋งŒ๋“  2020๋…„ 01์›” 25์ผ  ยท  7์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: hibernate/hibernate-reactive

ReactiveStreams(rxjava2, Reactor, MP ReactiveStreams ๋“ฑ) ๋ฐ Java 9 Flow API ์ง€์›์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

JAXRS ํด๋ผ์ด์–ธํŠธ์˜ .rx() ๋ฉ”์†Œ๋“œ์ฒ˜๋Ÿผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ openRxSession(<accept a impl type>) ์— ๋ณ€ํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋…ผ์˜ํ•ด์•ผ ํ•  ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. CompletionStage ๋Œ€์‹  Mutiny CC @cescoffier ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด Mutiny๋Š” ๋‹ค๋ฅธ ์œ ํ˜•๊ณผ ์—ฐ๊ฒฐ๋˜๋ฉฐ ReactiveStreams์˜ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค(์ ์–ด๋„ ๊ฒŒ์‹œ์ž์šฉ).

๋ชจ๋“  7 ๋Œ“๊ธ€

@hantsy ์šฐ๋ฆฌ๋Š” CompletionStage ์ด์™ธ์˜ ๋‹ค๋ฅธ ์˜ต์…˜์„ ํ™•์‹คํžˆ ์ง€์›ํ•˜๊ณ  ์‹ถ์ง€๋งŒ @cescoffier ๋ฐ @FroMage ๋ฐ @emmanuelbernard์™€ ๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์šฐ๋ฆฌ๊ฐ€ ์ง€์›ํ•˜๋Š” ์˜ต์…˜์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์ƒ๊ฐ์„ ์œ„์ž„ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ์œ ์ผํ•œ ์ œ์•ˆ์€ ์„œ๋กœ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— ์—ฌ๋Ÿฌ RxSession ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ  unwrap() ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(๋‹น์—ฐํ•œ ๋ฌธ์ œ๋Š” Vert.x๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ ์ด์™ธ์˜ ๋ฐ˜์‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“œ๋ผ์ด๋ฒ„๋„ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ๋…ผ์˜ํ•ด์•ผ ํ•  ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. CompletionStage ๋Œ€์‹  Mutiny CC @cescoffier ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด Mutiny๋Š” ๋‹ค๋ฅธ ์œ ํ˜•๊ณผ ์—ฐ๊ฒฐ๋˜๋ฉฐ ReactiveStreams์˜ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค(์ ์–ด๋„ ๊ฒŒ์‹œ์ž์šฉ).

์ด๊ฒƒ์€ ์ด์ œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์‰ฌ์šด ์ผ์ด๋ผ๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” @emmanuelbernard ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค :-)

@cescoffier ์ด๋ฏธ Mutiny ๊ธฐ๋ฐ˜ API๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. readme์™€ ์˜ˆ์ œ ํ”„๋กœ๊ทธ๋žจ์— ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ‹์žˆ๋Š”! ๋‚ด๊ฐ€ ๋ด์ค„๊ฒŒ!

Mutiny ...๋Š” ReactiveStreams์˜ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค.

์ข‹์•„, ์—ฌ๊ธฐ์—์„œ ๋‚ด๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ:

https://smallrye.io/smallrye-mutiny/

Mutiny API๋Š” ์ด๋ฏธ ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ๋ฐ˜์‘ ์ŠคํŠธ๋ฆผ ๊ตฌํ˜„๊ณผ ํ•จ๊ป˜ Hibernate Reactive๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ” 9 ํ๋ฆ„ API ์ง€์›

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ „ํ˜€ ์•Œ์ง€ ๋ชปํ•˜์ง€๋งŒ ReactiveStreams๋„ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ์•„๋งˆ๋„ ๊ทธ๊ฒƒ๋„ ๋‹ค๋ค˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“ , ์šฐ๋ฆฌ๋Š” ํ•ฉ๋‹นํ•œ ์ด์œ ๋กœ Java 8์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ง€๊ธˆ ๋‹น์žฅ์€ ์ด API๋กœ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ์—ด๋ฆฐ ๊ฒฐ๋ง์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๊ตฌ์ฒด์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€ ์ค‘์‹ฌ ๊ฒฝํ—˜์ด ์žˆ๋Š” ์‚ฌ๋žŒ์€ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด์–ด ํŠน์ • ์ƒˆ API๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋‹น์žฅ์€ ์ด ๋ฌธ์ œ๋ฅผ "์™„๋ฃŒ"๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (์•„๋‹ˆ๋ฉด Mutiny ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ ์ด๋ฏธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰