Я встречал похожие вопросы на разных постах, но они для меня бесполезны (нет ответа или нет полезного ответа). Я собираюсь описать все детали здесь и надеюсь на помощь.
Я использую java8, Spring Boot 2.0.3, элементы Spring Spring основаны на Finchley.RELEASE версии.
В моем тестовом приложении микроуслуг у меня есть следующие сервисы: config-server , discovery-service (Eureka), edge-service (zuul), карта-сервис . Все службы загружают во время запуска свою собственную конфигурацию с configuration-server . Службы запускаются без проблем.
card-service - получает случайный порт во время запуска. Это причина настройки маршрутизации zuul к календарю-сервису по serviceId
.
zuul:
debug:
request: true
routes:
card-service:
path: /card-service/**
serviceId: card-service
stripPrefix: true
Используя discovery-service клиент, я обнаружил следующие зарегистрированные сервисы ["edge-server", "card-service"]
. Таким образом, маршрут zuul использует тот же идентификатор сервиса (card-service
). Название сервиса правильное, потому что оно одинаково в card-service app bootstrap.yml
:
spring:
application:
name: card-service
Я использую прямой доступ к card-service
по:
http://localhost:59496/card-service/api/cards
http://localhost:59496/api/cards
(я настроил такой же результат для него). - отлично работает.
Мой Zuul ( пограничный сервер запущен на 8765
порту), поэтому я ожидаю навигации по
http://localhost:8765/card-service/api/cards
дает тот же результат. Но результат пуст. Проверка пограничного сервера журналов:
No handler mapping found for [/card-service/api/cards]
Last-Modified value for [/card-service/api/cards] is: -1
Проверка с помощью сопоставлений привода для пограничного сервера (http://localhost:8765/actuator/mappings - здесь я продемонстрировал наиболее заинтересованную часть):
{
"contexts": {
"edge-server-1": {
"mappings": {
"dispatcherServlets": {
"dispatcherServlet": [
...,
{
"handler": "org.springframework.cloud.netflix.zuul.web.ZuulController@24a37416",
"predicate": "/card-service/**",
"details": null
},
Вопрос
Есть какие-нибудь идеи, как исправить отображение маршрута для zuul ?