Zuul маршруты по serviceId не работает - PullRequest
0 голосов
/ 27 июня 2018

Я встречал похожие вопросы на разных постах, но они для меня бесполезны (нет ответа или нет полезного ответа). Я собираюсь описать все детали здесь и надеюсь на помощь.

Я использую 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 ?

1 Ответ

0 голосов
/ 30 июня 2018

Это был мой провал. Я думал, что настроил это после учебника, но, кажется, автозаполнение использовало @EnableZuulServer вместо @EnableZuulProxy в конфигурациях весенней загрузки. @EnableZuulProxy нужно загрузить настроенный routes для Zuul и все работает правильно, чем.

...