Spring Cloud gateway не вызывает сервис источника
Я впервые использую весенний облачный шлюз. моя конечная точка обслуживания http://localhost:8080/student/getlist
Проблема в том, что когда я пытаюсь вызвать мой сервис с помощью облачного шлюза, он дает мне 404. Эврика правильно показывает URL сервиса
мои свойства шлюза ниже
spring.application.name=gateway
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka
server.port=8085
management.endpoints.web.exposure.include=*
spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.routes.id=student-service
spring.cloud.gateway.routes.uri=lb://student-service
spring.cloud.gateway.routes.predicates.Path=/student/**
ниже приводные маршруты в шлюзе
[{"route_id":"CompositeDiscoveryClient_GATEWAY","route_definition":{"id":"CompositeDiscoveryClient_GATEWAY","predicates":[{"name":"Path","args":{"pattern":"/GATEWAY/**"}}],"filters":[{"name":"RewritePath","args":{"regexp":"/GATEWAY/(?<remaining>.*)","replacement":"/${remaining}"}}],"uri":"lb://GATEWAY","order":0},"order":0},{"route_id":"CompositeDiscoveryClient_STUDENT-SERVICE","route_definition":{"id":"CompositeDiscoveryClient_STUDENT-SERVICE","predicates":[{"name":"Path","args":{"pattern":"/STUDENT-SERVICE/**"}}],"filters":[{"name":"RewritePath","args":{"regexp":"/STUDENT-SERVICE/(?<remaining>.*)","replacement":"/${remaining}"}}],"uri":"lb://STUDENT-SERVICE","order":0},"order":0}]
я пытаюсь вызвать конечную точку службы через шлюз через
http://localhost:8085/student/getlist
выше URL, но это не работает. Что я делаю неправильно. нет никакого контекстного пути к каким-либо микросервисам. образец кода находится под
https://github.com/ojith97/sample.git
0 ответов
Попробуйте изменить свои свойства на
spring.cloud.gateway.routes[0].id=student-service
spring.cloud.gateway.routes[0].uri=lb://student-service
spring.cloud.gateway.routes[0].predicates[0]=Path=/student/**
Вы должны уведомить шлюз о сервере eureka с помощью этого
eureka.client.service-url.defaultZone=http://user:pass@localhost:8761/eureka
А затем сделайте запретить регистрацию шлюза в эврика
eureka.client.register-with-eureka=false
Второй вариант важен, поскольку он вызывает ошибку 404 при балансировке нагрузки с использованием структуры lb:servicename.