File tree Expand file tree Collapse file tree 3 files changed +37
-1
lines changed
src/main/kotlin/gogo/gogostage/global/feign Expand file tree Collapse file tree 3 files changed +37
-1
lines changed Original file line number Diff line number Diff line change @@ -25,6 +25,8 @@ repositories {
2525extra[" springCloudVersion" ] = " 2024.0.0-RC1"
2626
2727dependencies {
28+ implementation(" org.springframework.boot:spring-boot-starter-aop" )
29+ implementation(" org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j" )
2830 implementation(" com.fasterxml.jackson.datatype:jackson-datatype-jsr310" )
2931 implementation(" com.fasterxml.jackson.module:jackson-module-kotlin" )
3032 implementation(" org.springframework.boot:spring-boot-starter-data-redis" )
Original file line number Diff line number Diff line change 11package gogo.gogostage.global.feign.client
22
3+ import gogo.gogostage.global.feign.fallback.BettingClientFallbackFactory
34import gogo.gogostage.global.internal.betting.stub.BettingBundleDto
45import gogo.gogostage.global.internal.betting.stub.TotalBettingPointDto
6+ import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker
57import org.springframework.cloud.openfeign.FeignClient
68import org.springframework.web.bind.annotation.GetMapping
79import org.springframework.web.bind.annotation.RequestParam
810
9- @FeignClient(name = " gogo-betting" )
11+ @FeignClient(name = " gogo-betting" , fallbackFactory = BettingClientFallbackFactory :: class )
1012interface BettingClient {
1113 @GetMapping(" /betting/bundle" )
1214 fun bundle (
Original file line number Diff line number Diff line change 1+ package gogo.gogostage.global.feign.fallback
2+
3+ import gogo.gogostage.global.feign.client.BettingClient
4+ import gogo.gogostage.global.filter.LoggingFilter
5+ import gogo.gogostage.global.internal.betting.stub.BettingBundleDto
6+ import gogo.gogostage.global.internal.betting.stub.TotalBettingPointDto
7+ import org.slf4j.Logger
8+ import org.slf4j.LoggerFactory
9+ import org.springframework.cloud.openfeign.FallbackFactory
10+ import org.springframework.stereotype.Component
11+
12+ @Component
13+ class BettingClientFallbackFactory : FallbackFactory <BettingClient > {
14+
15+ private val log: Logger = LoggerFactory .getLogger(LoggingFilter ::class .java)
16+
17+ override fun create (cause : Throwable ): BettingClient {
18+ return object : BettingClient {
19+ override fun bundle (matchIds : List <Long >, studentId : Long ): BettingBundleDto {
20+ log.error(" BettingClient.bundle FallBack - matchIds: $matchIds , studentId: $studentId " )
21+ return BettingBundleDto (
22+ bettings = emptyList(),
23+ )
24+ }
25+
26+ override fun totalBettingPoint (matchIds : List <Long >, studentId : Long ): TotalBettingPointDto {
27+ log.error(" BettingClient.totalBettingPoint FallBack - matchIds: $matchIds , studentId: $studentId " )
28+ throw cause
29+ }
30+ }
31+ }
32+ }
You can’t perform that action at this time.
0 commit comments