๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring4

[MSA / Spring Cloud] Spring Cloud MSA ํ”„๋กœ์ ํŠธ์—์„œ CORS ์„ค์ •์— ๋Œ€ํ•ด (feat. 403 error) ๋ถ€ํŠธ์บ ํ”„ ํ”„๋กœ์ ํŠธ์˜ "๋™์ƒ์ด๋†"์—์„œ Spring Cloud ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•˜์—ฌ MSA ํ”„๋กœ์ ํŠธ ์„ธํŒ…์„ ๋งก์•˜๋Š”๋ฐ์š”์ œ๊ฐ€ MSA ์„ธํŒ…์„ ํ•˜๋ฉฐ CORS ์„ค์ •์— ๋Œ€ํ•ด ๋†“์ณค๋˜ ๋ถ€๋ถ„๊ณผ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๊ฒƒ์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋™์ƒ์ด๋†์˜ MSA ์•„ํ‚คํ…์ฒ˜๋™์ƒ์ด๋† ํ”„๋กœ์ ํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ MSA ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.8081 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” vue ํ”„๋กœ์ ํŠธ๊ฐ€ 8080 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” API Gateway์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉดAPI Gateway๋Š” ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ์—ญํ• ์„ ํ•˜๋Š” Eureka ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๊ฐ ๋ชจ๋“ˆ์˜ IP, Port ์ •๋ณด๋ฅผ ์•Œ์•„๋‚ด๊ณ  ์ ์ ˆํ•œ ๊ณณ์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜๋Š” ๊ฒƒ์ด์ฃ .(API gateway์™€ Eureka๋ฅผ ์ œ์™ธํ•œ ์„œ๋ฒ„๋“ค์€ ์œ ๋™ํฌํŠธ๋ฅผ ์“ฐ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, Eureka๋ฅผ ํ†ตํ•ด IP, Port๋ฅผ ์•Œ์•„๋‚ด๋Š” .. 2024. 10. 3.
[Spring Cloud] MSA ๊ตฌ์กฐ์—์„œ ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ (Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException) ๋™์ƒ์ด๋† ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ด ์‹œ์ž‘๋์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ axios ์ธํ„ฐ์…‰ํ„ฐ ์„ธํŒ…์„ ๋งก์•˜๋Š”๋ฐ์š”.์ธํ„ฐ์…‰ํ„ฐ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๋ณด๊ธฐ ์œ„ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์„œ๋ฒ„์— ๊ฐ„๋‹จํ•œ ์š”์ฒญ์„ ๋ณด๋ƒˆ๋Š”๋ฐ ์‘๋‹ต์ด ์˜ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค..  API Gateway์˜ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๋ฉ”์‹œ์ง€๊ฐ€ ์ฐํ˜€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. 2024-09-28T12:02:38.403+09:00 ERROR 80418 --- [api-gateway] [ctor-http-nio-2] a.w.r.e.AbstractErrorWebExceptionHandler : [d48b9c9b-243] 500 Server Error for HTTP GET "/member-service/member/healthcheck"io.netty.channel.ConnectTimeoutE.. 2024. 9. 28.
[Spring / FCM] FCM ์›น ํ‘ธ์‹œ ์•Œ๋ฆผ ๊ตฌํ˜„๊ธฐ (์„œ๋ฒ„ ํŽธ) ๋ถ€ํŠธ์บ ํ”„์—์„œ ์ตœ์ข… ํ”„๋กœ์ ํŠธ "๋™์ƒ์ด๋†"์„ ์ง„ํ–‰ํ•˜๋ฉฐ FCM์„ ์ด์šฉํ•œ ์•Œ๋ฆผ ๊ธฐ๋Šฅ์„ ๋งก๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ๊ณผ์ •์„ ๊ธฐ๋กํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. 1. ๋น„๊ณต๊ฐœ ํ‚ค ์ƒ์„ฑํ”„๋กœ์ ํŠธ ์„ค์ • > ์„œ๋น„์Šค ๊ณ„์ • > ์ž๋ฐ”๋กœ ๋“ค์–ด๊ฐ„ ํ›„, ํ•˜๋‹จ์— ์žˆ๋Š” "์ƒˆ ๋น„๊ณต๊ฐœ ํ‚ค ์ƒ์„ฑ" ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋น„๊ณต๊ฐœํ‚ค๋ฅผ ๋‹ค์šด ๋ฐ›์•„์ค๋‹ˆ๋‹ค. ๋‹ค์šด ๋ฐ›์€ ๋น„๊ณต๊ฐœ ํ‚ค๋Š” resources๋กœ ์˜ฎ๊ฒจ์ค๋‹ˆ๋‹ค!๋™์ƒ์ด๋†์˜ ์„œ๋ฒ„๋Š” MSA ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๋Š”๋ฐ, ๋ฉค๋ฒ„ ๋ชจ๋“ˆ์—์„œ FCM ์•Œ๋ฆผ์„ ์ฒ˜๋ฆฌํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ, ๋ฉค๋ฒ„ ๋ชจ๋“ˆ์˜ resources์— ๋„ฃ์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. 2. ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ์— firebase ์˜์กด์„ฑ ์ถ”๊ฐ€build.gradle์— ํ•ด๋‹น ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹คdependencies { implementation 'com.google.firebase:firebase-admin:9... 2024. 9. 22.
[Spring / Redis] @RedisHash ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ถ™์ธ ๊ฐ์ฒด๋ฅผ ๋ ˆ๋””์Šค์— ์ €์žฅํ–ˆ์„๋•Œ, ๊ทธ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ• redis-cli์—์„œ ๋‚ด๊ฐ€ ๋„ฃ์€ ๊ฐ’์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•key๋Š” @RedisHash ์— ์„ค์ •ํ•ด๋†“์€ value์™€ ๊ทธ ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค ์ค‘ @Id ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํ•„๋“œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ value:Id๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.์ฆ‰, ์•„๋ž˜์™€ ๊ฐ™์€ ํด๋ž˜์Šค๊ฐ€ ์žˆ๊ณ , ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๋•Œ Id์ธ accessToken ํ•„๋“œ ๊ฐ’์„ "hello"๋กœ ์„ค์ •ํ•ด๋†จ๋‹ค๋ฉดpackage com.mewsinsa.auth.jwt.redis.dto;import com.mewsinsa.member.domain.Member;import org.springframework.data.annotation.Id;import org.springframework.data.redis.core.RedisHash;@RedisHash(value = "accessToken", time.. 2024. 5. 18.