Я работаю над API-шлюзом для своего личного проекта. У меня проблема: когда первый запрос POST направляется через шлюз в службу аутентификации, я получаю ошибку, однако в службе аутентификации я получаю сообщение 200. Хорошо, я понял, что это все из-за инициализации Кафки. Когда отправляется первый запрос и служба аутентификации связывается через Kafka с почтовой службой, она просто инициализируется, и на стороне шлюза API происходит резервный сценарий, любые дальнейшие запросы всегда работают правильно. Я хочу установить какой-то «тайм-аут» запроса, чтобы он ждал, например, 5-10 секунд, и только затем вызывал резервный механизм.
Он имеет следующие версии зависимостей:< /p>
а вот зависимости в pom.xml модуля api-gateway:
Код: Выделить всё
org.springframework.cloud
spring-cloud-starter-gateway-mvc
org.springframework.cloud
spring-cloud-gateway-mvc
4.1.5
org.springframework.cloud
spring-cloud-circuitbreaker-resilience4j
io.github.resilience4j
resilience4j-spring-boot3
2.1.0
Вот конфигурация маршрутизации:
Код: Выделить всё
@Bean
public RouterFunction authenticationRoute() {
return route()
.route(path("/auth/**"), http("http://localhost:8080"))
.filter(rewritePath("/auth/(?.*)", "/api/authentication/${segment}"))
.filter(circuitBreaker("authenticationServiceCircuitBreaker", URI.create("forward:/fallback")))
.build();
}
Если я удалю строку кода, которая отправляет запрос от службы аутентификации к кафке, все работает нормально, но таким образом нарушается рабочий процесс приложения. Также я попробовал конфигурацию автоматического выключателя yaml, но это тоже не увенчалось успехом, вообще говоря, ни одна конфигурация yml у меня по какой-то причине не работает, когда я пытаюсь настроить что-то вроде этого:
Код: Выделить всё
filters:
- name: CircuitBreaker
args:
name: auth-circuit
fallbackUri: forward:/fallback
Я получаю следующую ошибку: java.lang.IllegalArgumentException: автоматический выключатель должен иметь идентификатор.
Поэтому я также не могу настроить этот автоматический выключатель в файле yml, большая часть рекомендаций написана для webflux, но не для mvc
Подробнее здесь:
https://stackoverflow.com/questions/790 ... -cloud-mvc