#spring #spring-boot #spring-cloud-gateway #service-discovery
Вопрос:
Я новичок в spring cloud gateway и хотел бы использовать его в проекте в качестве службы шлюза.
Моя проблема в том, что у меня нет uri, о котором можно упомянуть в приведенном ниже yaml. uri должен быть разрешен во время выполнения, где текст «учетная запись пользователя-служба» должен быть преобразован в https://user-account.san.com. Это происходит путем вызова встроенного кода библиотеки, например:
@Bean
private ServiceLocator serviceLocator;
public locateService(String service) {
//library call to resolve the text into the uri.
//example: 'user-account-service' gets transformed into uri https://user-account.san.com
serviceLocator.locate(service);
}
Проект уже содержит пользовательскую службу обнаружения, подобную Eureka, в которой текст с надписью «служба учетных записей пользователей» преобразуется в URL-адрес.
Я вижу, что spring cloud gateway поддерживает обнаружение Eureka с помощью конфигурации, но можно ли написать пользовательский фильтр или настроить пользовательскую службу обнаружения, где, скажем, я могу использовать значение «идентификатор «»служба учетной записи пользователя», как показано ниже, чтобы вызвать пользовательскую службу обнаружения для разрешения uri?
Обратите внимание, что у меня есть несколько таких служб, поэтому текст «учетная запись пользователя-служба» должен храниться в конфигурации вместо жесткого кода.
spring:
cloud:
gateway:
routes:
- id: user-account-service
uri: no://op
predicates:
- Path=/user-account/user/**