1
votes

Im working with Spring Cloud Zuul + Eureka Server. i know that Zuul will create routes dynamically when there is a service registered on Eureka and it will be route using their Service ID. Is it possible to delegate routes to group services ?

for example i have 2 services that i want to group:

server.port=8081
spring.application.name=company-account-api

server.port=8082
spring.application.name=company-transaction-api

eureka config

spring.application.name=api-discovery
spring.cloud.config.uri=${CONFIG_SERVER_URL:http://localhost:8888}

on Zuul is it possible define a route where i can access the 2 services registered on eureka ?

server.port=9090
spring.application.name=api-gateway
eureka.instance.preferIpAddress=true
eureka.client.registerWithEureka=true
eureka.client.fetchRegistry=true
eureka.serviceurl.defaultzone=http://localhost:8761/eureka
zuul.routes.company-api=/company-**

so when i access http://localhost:9090/company-api/company-account-api & http://localhost:9090/company-api/company-transaction-api the service registered on eureka will be available

1
do you mean to say, instead of service names, you want to use your own id(company-api) ?pvpkiran

1 Answers

0
votes

You can achieve this with the following config

zuul.ignored-services=*
zuul.routes.company-account-api.serviceId=company-account-api
zuul.routes.company-account-api.path=/company-api/company-account-api/**

zuul.routes.company-transaction-api.serviceId=company-transaction-api
zuul.routes.company-transaction-api.path=/company-api/company-transaction-api/**

Explanation:
zuul.ignored-services=* This will supress the default config

zuul.routes.company-account-api.serviceId=company-account-api
zuul.routes.company-account-api.path=/company-api/company-account-api/**

What is exposed to public is /company-api/company-account-api/** which will be internally mapped to company-account-api service.

If you are not using service discovery then you can do it using url instead of service name

zuul.routes.company-account-api.url=http://accountapihost:accountapiport
zuul.routes.company-account-api.path=/company-api/company-account-api/**