Я реализую функции API Gateway с помощью облачного шлюза Spring.
У меня мало вопросов, может кто-нибудь обратиться, пожалуйста?
- Автоматический выключатель Hystrix не работает при развертывании в openshiftгде, как это хорошо работает на локальном
- Попытка реализовать Ratelimiter, но не в состоянии выдать 429 Ошибка слишком многих запросов (даже локальных)
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayServiceApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayServiceApplication.class, args);
}
@Bean(name = "userKeyResolver")
public KeyResolver userKeyResolver() {
return exchange -> {
return Mono.just(exchange.getRequest().getRemoteAddress().getAddress().getHostAddress());
};
}
}
application.yml
spring:
cloud:
gateway:
routes:
- id: interface-service
uri: http://interface-service-env.alpha.prof.comp.com
predicates:
- Path=/v1/getConfig
filters:
- name: Hystrix
args:
name: fallbackcmd
fallbackUri: forward:/fallback/getConfig
- RewritePath=/v1/getConfig, /getConfig
- id: interface-service
uri: http://interface-service-env.alpha.prof.comp.com
predicates:
- Path=/helloworld
filters:
- name: RequestRateLimiter
args:
redis-rate-limiter.replenishRate: 1
redis-rate-limiter.burstCapacity: 1
key-resolver: "#{@userKeyResolver}"
@RestController
@RequestMapping("/fallback")
public class HysController {
@GetMapping("/getConfig")
public String getConfig() {
return "API Call is down, This is the fall back Service for /getConfig ";
}
}