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.

Другие вопросы по тегам