Как мне подключить пружину с помощью пружины 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-адреса, и все это можно сделать с помощью идентификатора службы. Я посмотрел учебник по использованию эврика здесь:
но я не совсем понимаю, как я могу достичь своей цели, не добавляя в код весь 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 или хост