๐ Java & Kotlin & Spring54 AWS SQS + Spring Boot 3 + kotlin ์ธํ๋ผ ๊ตฌ์ถํ๊ธฐ ๊ด๋ จ ๊ธAWS SQS + Spring Boot 3 + kotlin ์ธํ๋ผ ๊ตฌ์ถํ๊ธฐAWS SQS ๋ฅผ ์ด์ฉํ DLQ ์ค์ message converter ๋ฅผ ์ด์ฉํ sqs message serializerdlq ์๋ฌ ํธ๋ค๋ง ์ด๋ฒ ๊ธ์ ๋ชฉํ๋ Spring Boot ๊ณผ kotlin ์ ์ด์ฉํด์ SQS ๋ฅผ ์ฐ๋ํ๋ application ์ ๊ฐ๋ฐํ๋ ๊ฒ์ด๋ค. Spring Boot ๋ก application ์ ๋ง๋ค์ด๋ณด๋ฉฐ ๊ฐ๋ตํ๊ฒ SQS ์ ์ค์ ์ด ์ด๋ค ๊ฒ์ ์๋ฏธํ๋์ง ์์๋ณด์. ๋ชฉ์ฐจprerequisitesIAM User ์์ฑํ๊ธฐsqs ์์ฑํ๊ธฐspring boot ์ ์ฐ๋SQS ์ ์ฌ๋ฌ ์ค์ ๋ค1. prerequisities๋ค์ ๋ฒ์ ์ผ๋ก ์ค์ต์ ์งํํ ์์ ์ด๋ค.kotlin (java 21)Spring Boot 3.3.2a.. 2024. 7. 27. Spring ์์ @Async ๋ฅผ ์ฌ์ฉํ ๋๋ ThreadPoolTaskExecutor ๋ฅผ ๋ฑ๋กํด์ฃผ์ TL;DR ์ด๋ฒ ๊ธ์ ํต์ฌ์ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค @Async ์? Spring ์์ ๋น๋๊ธฐ ์์ ์ ์ฝ๊ฒ ์คํํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฅ ์ ThreadPoolTaskExecutor ๋ฅผ ๋ฑ๋กํด์ผ ํ ๊น? Spring ์ ๊ธฐ๋ณธ ๋น๋๊ธฐ ์ฒ๋ฆฌ Executor ๋ ๋งค๋ฒ ์๋ก์ด thread ๋ฅผ ์์ฑ ThreadPool ์ ์ด์ฉํ ํ์๊ฐ ์์ ์ฌ์ ์ง์ Executor ์ ThreadPoolExecutor Spring ์ TaskExecutor ThreadPoolExecutor ์ดํดํ๊ธฐ ์ ํํ๋ ThreadPoolExecutor ์์์ ์ด๋ค ๋ก์ง์ ์ํด ์๋ก์ด thread ๋ฅผ ๋ง๋๋์ง ์์์ผ ํจ ์ค์ ์ ๋ฐ๋ผ single thread ์ฒ๋ผ ๋์ํ ์ ์์ ์ ์ ํ ThreadPoolTaskExecutor ์ ์ค์ ๊ฐ ์ฐพ๊ธฐ.. 2024. 4. 17. [Spring] ApplicationEventPublisher ๋ฅผ ์ด์ฉํด์ Event ๋ฅผ ๋ฐํํ๋ฉด ์ด๋ค ์ผ์ด ์ผ์ด๋ ๊น ํด๋น ๊ธ์ ์ ์ฒด ์์ค์ฝ๋๋ github ์์ ํ์ธํ ์ ์์ต๋๋ค. README ๋ฅผ ์ฐธ์กฐํ์ธ์ ๋ชฉ์ฐจ ๋๊ธฐ There is No Magic in spring ๋๊ธฐ ์ต๊ทผ์ DDD ๋ฅผ ํ์ตํ๋ฉด์ ๋๋ฉ์ธ ์ด๋ฒคํธ๋ผ๋ ๊ฒ์ ์๊ฒ ๋์๋ค. ๊ทธ๋ฌ๋ฉด์ Spring ์์ ํ VM ์์์ ์ด๋ฒคํธ๋ฅผ ๋ฐํํ๊ณ ํด๋น ์ด๋ฒคํธ๋ฅผ handling ํ๋ ์ฝ๋๋ฅผ ์ ํ๊ณ , ๊ทธ์ ๊ด๋ จํด์ ์ฌ๋ฌ ์ค์ต์ ํด๋ณด๋ ์ค Spring ์์ ๋ฌด์ธ๊ฐ Magic ์ด ์ผ์ด๋๊ณ ์๋๊ฒ ๊ฐ์ ๋๋์ ๋ฐ์๋ค. ๊ธด ๋ง ํ์ ์์ด ์๋์ ์ฝ๋๋ฅผ ํ์ธํด๋ณด์. @Entity(name = "orders") public class Order { public static Order create() { return new Order(); } @Id private Long id; .. 2022. 8. 15. [Distributed Tracing] Messaging ํ๊ฒฝ์์์ ๋ถ์ฐ ์ถ์ ์ค์ต ๋ณธ ๊ธ์ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ถ์ฐ ์ถ์ ์๋ฆฌ์ฆ๋ก ์ด๋ก ๊ณผ ์ค์ต์ด ํจ๊ป ํฌํจ๋ ์๋ฆฌ์ฆ์ ๋๋ค. ์๋ ๋ชฉ์ฐจ์ ํ์๋ ๊ธ์ ๋ชจ๋ ์ฐธ๊ณ ํ๋ฉด ์ข์ต๋๋ค. ๋ชฉ์ฐจ Distributed Tracing, ๋ถ์ฐ ์ถ์ ์ด๋? Spring Cloud Sleuth ์ Zipkin Sleuth ๋ก Http ํ๊ฒฝ์ ๋ถ์ฐ ์ถ์ ์ค์ต Sleuth ๋ก Messaging ํ๊ฒฝ์ ๋ถ์ฐ ์ถ์ ์ค์ต ์ค์ต์ ๋ํ ์์ค์ฝ๋๋ฅผ ํ์ธํ์๊ณ ์ถ๋ค๋ฉด ์ค์ต github์์ ํ์ธํ์ค ์ ์์ต๋๋ค. Messaging ํ๊ฒฝ ์์์ ๋ถ์ฐ ์ถ์ ์ค์ต ์ง๋ ์๊ฐ ์ฐ๋ฆฌ๋ HTTP ํ๊ฒฝ์์์ ๋ถ์ฐ ์ถ์ ์ ๋ํด์ ์์๋ณด์๋ค. ๋ค์ ํ๋ฒ ๊ฐ๋ต์ ์ธ ์ํคํ ์ฒ์ ๋ํด์ ํ์ธํด๋ณด์ ์ ์ํคํ ์ฒ๋ฅผ ๊ตฌ๋ถํ์๋ฉด 2๊ฐ์ ๋ถ๋ถ์ผ๋ก ๋๋ ์ ์๋ค. HTTP API Messaging ์ด๋ฒ์๋ HTTP.. 2022. 5. 1. [Distributed Tracing] HTTP ํ๊ฒฝ์์์ ๋ถ์ฐ ์ถ์ ์ค์ตํ๊ธฐ ๋ณธ ๊ธ์ ๋ง์ดํฌ๋ก์๋น์ค์ ๋ถ์ฐ ์ถ์ ์๋ฆฌ์ฆ๋ก ์ด๋ก ๊ณผ ์ค์ต์ด ํจ๊ป ํฌํจ๋ ์๋ฆฌ์ฆ์ ๋๋ค. ์๋ ๋ชฉ์ฐจ์ ํ์๋ ๊ธ์ ๋ชจ๋ ์ฐธ๊ณ ํ๋ฉด ์ข์ต๋๋ค. ๋ชฉ์ฐจ Distributed Tracing, ๋ถ์ฐ ์ถ์ ์ด๋? Spring Cloud Sleuth ์ Zipkin Sleuth ๋ก Http ํ๊ฒฝ์ ๋ถ์ฐ ์ถ์ ์ค์ต Sleuth ๋ก Messaging ํ๊ฒฝ์ ๋ถ์ฐ ์ถ์ ์ค์ต ์ค์ต์ ๋ํ ์์ค์ฝ๋๋ฅผ ํ์ธํ์๊ณ ์ถ๋ค๋ฉด ์ค์ต github์์ ํ์ธํ์ค ์ ์์ต๋๋ค. Spring Cloud Sleuth ๋ฅผ ์ด์ฉํ HTTP ํ๊ฒฝ์ ๋ถ์ฐ ์ถ์ ์ด๋ฒ์ ์ง๋ ์๊ฐ์ ์์๋ณด์๋ ๋ถ์ฐ ์ถ์ ์ ๋ํ ์ค์ต์ ์งํํด๋ณด๋ ค ํ๋ค. ์ฐ์ ๊ฐ๋ต์ ์ธ ์ํคํ ์ฒ๋ ๋ค์๊ณผ ๊ฐ๋ค ์ ์ํคํ ์ฒ๋ฅผ ๊ตฌ๋ถํ์๋ฉด 2๊ฐ์ ๋ถ๋ถ์ผ๋ก ๋๋ ์ ์๋ค. HTTP API Messaging.. 2022. 5. 1. ๋คํ์ฑ์ ์ํ instanceof ๋ฅผ Generic ์ผ๋ก ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ ๋ชฉ์ฐจ ์๋ก instanceof ๋? ์ฝ๋์์ instanceof ๋ฅผ ๋๊ปด๋ณด์ Generic ์ ์ด์ฉํ์ฌ ์ฐ์ํ๊ฒ ์ ๊ฑฐํ๊ธฐ ๊ทธ๋ผ์๋ ์กด์ฌํ๋ ๋ฌธ์ ์ ํ์ง๋ง? ์๋ก ์๋ฐ์์ ๋คํ์ฑ์ ์ด์ฉํ ๊ฐ์ฒด์งํฅ์ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค๋ณด๋ฉด ์ข ์ข ํน์ ๊ฐ์ฒด๊ฐ ์ง์ ๋ ์ ํ์ ์ธ์คํด์ค์ธ์ง ํ์ธํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๊ทธ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๋ ์ฌ๋ฌ๊ฐ์ง ์ ํ์ง๊ฐ ์์ง๋ง, ์ค๋์ instanceof ์ ๋ํด ์ง์คํ๊ณ ์ด์ผ๊ธฐํด๋ณด๋ ค ํ๋ค. ๋คํ์ฑ์ ์ด์ฉํ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค ๋ณด๋ฉด ํน์ ํ์ผ๋ก ๋ณํํ๊ธฐ ์ํด ๋ช๊ฐ์ง ์์ ์ ํด์ผ ํ๋๋ฐ, ๊ทธ์ค ๋ํ์ ์ธ ๊ฒ์ด ๋ฐ๋ก instanceof ์ฐ์ฐ์์ด๋ค. instanceof ๋? ์์ ๋งํ๋ฏ Java ์์๋ ์ด๋ค ๊ฐ์ฒด์ ํน์ type ์ ๋ํด์ ๋์ผํ type ์ธ์ง ํ์ธํ ์ ์๋ ์ฐ์ฐ์ instanceof ์ฐ์ฐ์.. 2022. 4. 3. ์ด์ 1 2 3 4 ยทยทยท 9 ๋ค์