k-marx macalalag
k-marx macalalag

Reputation: 13

spring zuul + eureka route delegation

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

Upvotes: 1

Views: 468

Answers (1)

pvpkiran
pvpkiran

Reputation: 27018

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/**

Upvotes: 0

Related Questions