Skip to content

Commit 8a7dc31

Browse files
committed
user-service deploy fix.
1 parent c74290f commit 8a7dc31

5 files changed

Lines changed: 32 additions & 40 deletions

File tree

redis-client-lib/src/main/java/com/craftpilot/redis/config/RedisClientAutoConfiguration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public ReactiveStringRedisTemplate reactiveStringRedisTemplate(
5757
@Bean
5858
@ConditionalOnMissingBean
5959
public CircuitBreakerRegistry circuitBreakerRegistry(RedisClientProperties properties) {
60+
// Bu konfigürasyon, tüm projeler için merkezi devre kesici konfigürasyonu olacak
6061
CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom()
6162
.slidingWindowType(CircuitBreakerConfig.SlidingWindowType.COUNT_BASED)
6263
.slidingWindowSize(10)
@@ -98,6 +99,8 @@ public ReactiveRedisService reactiveRedisService(
9899
ReactiveStringRedisTemplate redisTemplate,
99100
CircuitBreakerRegistry circuitBreakerRegistry,
100101
RedisClientProperties properties) {
102+
// "redis" ismindeki devre kesici burada yaratılıyor
103+
// Bu isim, tüm mikroservislerde tek bir isim olacak
101104
return new ReactiveRedisService(
102105
redisTemplate,
103106
circuitBreakerRegistry,

redis-client-lib/src/main/java/com/craftpilot/redis/service/ReactiveRedisService.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,17 @@ public class ReactiveRedisService {
1616

1717
protected final ReactiveStringRedisTemplate redisTemplate;
1818
protected final CircuitBreaker circuitBreaker;
19-
protected final AtomicBoolean redisHealthy = new AtomicBoolean(true);
2019
protected final Duration defaultTtl;
20+
protected final AtomicBoolean redisHealthy = new AtomicBoolean(true);
21+
private static final String CIRCUIT_BREAKER_NAME = "redisCircuitBreaker"; // Sabit bir isim kullanıyoruz
2122

2223
public ReactiveRedisService(
2324
ReactiveStringRedisTemplate redisTemplate,
2425
CircuitBreakerRegistry circuitBreakerRegistry,
2526
Duration defaultTtl) {
2627
this.redisTemplate = redisTemplate;
27-
this.circuitBreaker = circuitBreakerRegistry.circuitBreaker("redis");
28+
// Burada sabit bir isim kullanıyoruz ve bu sayede çakışmaları önlüyoruz
29+
this.circuitBreaker = circuitBreakerRegistry.circuitBreaker(CIRCUIT_BREAKER_NAME);
2830
this.defaultTtl = defaultTtl;
2931

3032
// Devre kesici durumu değişim olaylarını dinle

user-service/src/main/java/com/craftpilot/userservice/config/CircuitBreakerConfig.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,11 @@ public RateLimiterConfigCustomizer userServiceRateLimiterConfig() {
4343
);
4444
}
4545

46+
// Redis devre kesicisi için özel bir isim kullanalım (userRedis)
4647
@Bean
47-
public CircuitBreakerConfigCustomizer redisCircuitBreakerConfig() {
48+
public CircuitBreakerConfigCustomizer userRedisCircuitBreakerConfig() {
4849
return CircuitBreakerConfigCustomizer
49-
.of("redis", builder -> builder
50+
.of("userRedis", builder -> builder
5051
.slidingWindowSize(10)
5152
.slidingWindowType(SlidingWindowType.COUNT_BASED)
5253
.waitDurationInOpenState(Duration.ofSeconds(30))

user-service/src/main/java/com/craftpilot/userservice/config/RedisConfig.java

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import com.craftpilot.redis.RedisClientAutoConfiguration;
44
import com.craftpilot.redis.metrics.RedisMetricsService;
55
import com.craftpilot.redis.service.ReactiveRedisService;
6-
import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;
7-
import io.github.resilience4j.common.circuitbreaker.configuration.CircuitBreakerConfigCustomizer;
86
import io.micrometer.core.instrument.MeterRegistry;
97
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
108
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -13,8 +11,6 @@
1311
import org.springframework.context.annotation.Import;
1412
import org.springframework.context.annotation.Primary;
1513

16-
import java.time.Duration;
17-
1814
/**
1915
* Redis özelleştirmeleri için konfigürasyon sınıfı.
2016
*
@@ -27,24 +23,7 @@
2723
public class RedisConfig {
2824

2925
/**
30-
* Redis için devre kesici (circuit breaker) özelleştirmesi
31-
*/
32-
@Bean
33-
public CircuitBreakerConfigCustomizer redisCircuitBreakerCustomizer() {
34-
return CircuitBreakerConfigCustomizer
35-
.of("redis", builder -> builder
36-
.slidingWindowType(CircuitBreakerConfig.SlidingWindowType.COUNT_BASED)
37-
.slidingWindowSize(10)
38-
.failureRateThreshold(50.0f)
39-
.waitDurationInOpenState(Duration.ofSeconds(30))
40-
.permittedNumberOfCallsInHalfOpenState(3)
41-
.minimumNumberOfCalls(5)
42-
.recordExceptions(Exception.class)
43-
);
44-
}
45-
46-
/**
47-
* ReactiveRedisService bean'i için primary tanımlaması.
26+
* ReactiveRedisService için primary bean tanımı.
4827
* Bu, ReactiveCacheService ile çakışmaları önler.
4928
*/
5029
@Bean
@@ -54,9 +33,9 @@ public ReactiveRedisService primaryRedisService(ReactiveRedisService reactiveRed
5433
}
5534

5635
/**
57-
* RedisMetricsService bean'i için özelleştirilmiş yapılandırma.
58-
* Bu, birden fazla ReactiveRedisService tipindeki bean çakışmasını önlemek için
59-
* primary olan ReactiveRedisService bean'ini kullanmasını sağlar.
36+
* RedisMetricsService için özel bir bean tanımı yapmak yerine
37+
* varolan RedisMetricsService bean'ini override ediyoruz ve doğrudan
38+
* primary olan ReactiveRedisService bean'ini kullanmasını sağlıyoruz.
6039
*/
6140
@Bean
6241
@ConditionalOnBean(MeterRegistry.class)

user-service/src/main/resources/application.yml

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,22 @@ springdoc:
9292

9393
resilience4j:
9494
circuitbreaker:
95+
configs:
96+
default:
97+
slidingWindowSize: 10
98+
failureRateThreshold: 50
99+
waitDurationInOpenState: 10s
100+
permittedNumberOfCallsInHalfOpenState: 3
95101
instances:
96102
userPreferences:
103+
baseConfig: default
104+
userRedis: # UserService için özel Redis devre kesici
105+
baseConfig: default
106+
redisCircuitBreaker: # Kütüphane için ortak Redis devre kesici
97107
slidingWindowSize: 10
98108
failureRateThreshold: 50
99-
waitDurationInOpenState: 5s
109+
waitDurationInOpenState: 10s
100110
permittedNumberOfCallsInHalfOpenState: 3
101-
registerHealthIndicator: true
102-
allowHealthIndicatorToFail: true
103-
automaticTransitionFromOpenToHalfOpenEnabled: true
104111
retry:
105112
instances:
106113
userPreferences:
@@ -133,16 +140,16 @@ craftpilot:
133140
port: ${REDIS_PORT:6379}
134141
password: ${REDIS_PASSWORD:13579ada}
135142
database: 0
136-
connect-timeout: 3000
137-
timeout: 3000
138-
cache-ttl-hours: 1
139-
pool-max-active: 16
140-
pool-max-idle: 8
141-
pool-min-idle: 4
143+
connect-timeout: 2000ms
144+
timeout: 1000ms
145+
cache-ttl-hours: 24
146+
pool-max-active: 32
147+
pool-max-idle: 16
148+
pool-min-idle: 8
142149
pool-max-wait: 1000ms
143150
circuit-breaker-enabled: true
144151
circuit-breaker-failure-rate-threshold: 50.0
145-
circuit-breaker-wait-duration-in-open-state: 30s
152+
circuit-breaker-wait-duration-in-open-state: 10s
146153
circuit-breaker-permitted-calls-in-half-open-state: 3
147154
retry-enabled: true
148155
max-retry-attempts: 2

0 commit comments

Comments
 (0)