Я хочу включить маршрутизацию по умолчанию в моем весеннем облачном шлюзе (без zuul) с помощью идентификаторов служб, зарегистрированных в eureka (имена приложений), но я всегда получал ошибку 404.
В моем чате bootstrap.yml я определил имя приложения
spring:
application:
name: chat-service
и в свойствах приложения:
eureka:
instance:
preferIpAddress: true
client:
healthcheck:
enabled: true
serviceUrl:
defaultZone: http://${EUREKA_HOST:localhost}:${EUREKA_PORT:8761}/eureka/
когда я перехожу на панель управления eureka, я также вижу зарегистрированную мою службу чата и шлюз.
Конфигурация Eureka в приложении шлюза такая же, как и в чате, но у меня также есть это:
spring:
application:
name: gateway
cloud:
gateway:
discovery:
locator:
enabled: true
а затем я также попытался добавить явные маршруты, которые тоже не работают, но если у меня включен локатор обнаружения, установленный на true
, это не нужно, верно?
routes:
- id: chat-service-route
uri: lb://chat-service
predicates:
- Path=**
Я создал тестовую конечную точку, которую я попытался вызвать непосредственно в службе чата, а также через шлюз. Прямой вызов работает нормально, поэтому проблема будет в маршрутизации.
@RestController
@RequestMapping
public class TestController {
@GetMapping
public String test() {
return "chat-service ready";
}
}
Что я сделал не так? Я немного в отчаянии. Я использую весеннюю загрузку 2.2.2 и версию облачных зависимостей Hoxton.RELEASE.