Как мне подключить пружину с помощью пружины eureka?

Я создал одностраничное приложение, используя Spring Tutorial для создания приложения с AngularJS и OAuth, которое можно найти здесь: https://spring.io/guides/tutorials/spring-security-and-angular-js/#_multiple_ui_applications_and_a_gateway_single_page_application_with_angular_part_and_and_and_part_and_and_and_part

Это файлы application.yml для приложения SPA:

security:
  user:
    password: none
  oauth2:
    client:
      accessTokenUri: localhost:7777/uaa/oauth/token
      userAuthorizationUri: localhost:7777/uaa/oauth/authorize
      clientId: acme
      clientSecret: acmesecret
    resource:
      user-info-uri: localhost:7777/uaa/user


zuul:
  routes:
    resource:
      path: /resource/**
      url: localhost:9000/resource
    user:
      path: /user/**
      url: localhost:7777/uaa/user

eureka:
  client:
    serviceUrl:
      defaultZone: ${vcap.services.eureka-service.credentials.uri:127.0.0.1:8761}/eureka/

---
spring:
  profiles: cloud
eureka:
  instance:
    hostname: ${APPLICATION_DOMAIN}
    nonSecurePort: 80

Я хочу знать, как бы я изменил маршруты zuul и user-info-uri, чтобы мне не нужно было указывать URL-адреса, и все это можно сделать с помощью идентификатора службы. Я посмотрел учебник по использованию эврика здесь:

https://spring.io/blog/2015/01/20/microservice-registration-and-discovery-with-spring-cloud-and-netflix-s-eureka

но я не совсем понимаю, как я могу достичь своей цели, не добавляя в код весь java, потому что базовый сервер eureka, кажется, уже регистрирует все мои сервисы.

2 ответа

Решение

Если я правильно понимаю ваш вопрос, вы можете просто использовать файл конфигурации в этом шаблоне:

zuul:
  routes:
    <service_id>:
      path: /path/**

Например (если ваш oauth-сервис зарегистрирован как auth):

zuul:
  routes:
    auth:
      path: /user/**

Zuul будет использовать Eureka и найти конечные точки для услуг. В дополнение к этому он обеспечит балансировку нагрузки на стороне клиента.

Если у меня возникла проблема с использованием идентификатора службы eureka, то userInfoUri все время выдавал исключение UnknownHost, @LoadBallanced restTemplate не решал мою проблему, решение было установить false-token-info в false (если true - нет балансировки нагрузки для oauth)

security.oauth2.resource.service-id={Service ID as at eureka server registered}
security.oauth2.resource.userInfoUri= http://${security.oauth2.resource.service-id}/user/me
security.oauth2.resource.loadBalanced=true
security.oauth2.resource.prefer-token-info=false

номер порта не требуется, если используется идентификатор сервиса, но необходим, если используется ip или хост

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