Skip to content

Commit 8c8ffc7

Browse files
committed
chore: 정리된 의존성 재배치 및 Resilience4j 설정 개선 (Retry, CircuitBreaker 세부 조정 포함)
1 parent e7541e8 commit 8c8ffc7

4 files changed

Lines changed: 37 additions & 32 deletions

File tree

apps/commerce-api/build.gradle.kts

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,25 @@ dependencies {
1111
implementation("org.springframework.boot:spring-boot-starter-actuator")
1212
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:${project.properties["springDocOpenApiVersion"]}")
1313

14-
// querydsl
15-
annotationProcessor("com.querydsl:querydsl-apt::jakarta")
16-
annotationProcessor("jakarta.persistence:jakarta.persistence-api")
17-
annotationProcessor("jakarta.annotation:jakarta.annotation-api")
18-
19-
// test-fixtures
20-
testImplementation(testFixtures(project(":modules:jpa")))
21-
testImplementation(testFixtures(project(":modules:redis")))
22-
2314
// Resilience4j (Spring Boot 3.x 기준)
24-
implementation("io.github.resilience4j:resilience4j-spring-boot3:2.2.0")
15+
implementation("io.github.resilience4j:resilience4j-spring-boot3")
2516

2617
// AOP
2718
implementation("org.springframework.boot:spring-boot-starter-aop")
2819

29-
// actuator
30-
implementation("org.springframework.boot:spring-boot-starter-actuator")
31-
3220
//Micrometer Prometheus
3321
implementation("io.micrometer:micrometer-registry-prometheus")
3422

3523
//Spring Cloud OpenFeign
3624
implementation("org.springframework.cloud:spring-cloud-starter-openfeign")
3725

38-
//Spring Cloud CircuitBreaker
39-
implementation("org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j")
26+
27+
// querydsl
28+
annotationProcessor("com.querydsl:querydsl-apt::jakarta")
29+
annotationProcessor("jakarta.persistence:jakarta.persistence-api")
30+
annotationProcessor("jakarta.annotation:jakarta.annotation-api")
31+
32+
// test-fixtures
33+
testImplementation(testFixtures(project(":modules:jpa")))
34+
testImplementation(testFixtures(project(":modules:redis")))
4035
}

apps/commerce-api/src/main/resources/application.yml

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,29 +23,44 @@ spring:
2323
- redis.yml
2424
- logging.yml
2525
- monitoring.yml
26+
cloud:
27+
openfeign:
28+
client:
29+
config:
30+
default:
31+
connectTimeout: 1000
32+
readTimeout: 1000
2633

2734
resilience4j:
28-
# Retry
2935
retry:
3036
instances:
31-
pgRetry:
32-
max-attempts: 3
33-
wait-duration: 1000ms
37+
pg-client:
38+
max-attempts: 2 # 1번만 재시도 (총 2회)
39+
wait-duration: 500ms
3440
retry-exceptions:
3541
- java.io.IOException
36-
- java.util.concurrent.TimeoutException
37-
- java.net.ConnectException
42+
- java.net.SocketTimeoutException
43+
- feign.RetryableException
44+
# 비즈니스 로직 에러(400 등)는 재시도 하지 않음
45+
ignore-exceptions:
46+
- com.loopers.support.error.CoreException
47+
- feign.FeignException.BadRequest
48+
- feign.FeignException.NotFound
3849

39-
# CircuitBreaker
4050
circuitbreaker:
4151
configs:
4252
default:
4353
register-health-indicator: true
4454
instances:
45-
simpleCircuitBreakerConfig:
55+
pg-client:
4656
sliding-window-type: COUNT_BASED
4757
sliding-window-size: 10
48-
failure-rate-threshold: 50
58+
minimum-number-of-calls: 5
59+
# 500ms 이상 걸리면 '슬로우 콜'로 간주 (빠른 차단)
60+
slow-call-duration-threshold: 500ms
61+
slow-call-rate-threshold: 50
62+
63+
failure-rate-threshold: 40
4964
wait-duration-in-open-state: 10s
5065
permitted-number-of-calls-in-half-open-state: 3
5166

apps/pg-simulator/src/main/resources/application.yml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,6 @@ spring:
2323
- redis.yml
2424
- logging.yml
2525
- monitoring.yml
26-
cloud:
27-
openfeign:
28-
client:
29-
config:
30-
default:
31-
connectTimeout: 1000
32-
readTimeout: 1000
3326

3427
datasource:
3528
mysql-jpa:

settings.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ rootProject.name = "loopers-java-spring-template"
33
include(
44
":apps:commerce-api",
55
":apps:commerce-streamer",
6+
":apps:pg-simulator",
67
":modules:jpa",
78
":modules:redis",
89
":modules:kafka",
10+
911
":supports:jackson",
1012
":supports:logging",
1113
":supports:monitoring",
12-
":apps:pg-simulator",
14+
1315
)
1416

1517
// configurations

0 commit comments

Comments
 (0)