I want to implement custom filters for my Zuul proxy. Now, I know there has been a lot of talking about that subject here and I took a look at the answer provided, with the examples of filters and the Spring Cloud documentation, which I went through several times. I have tried to copy some of the filters content to my use, but it didn't work.
I have a Eureka server, registering 3 separate services, one of them being the front door to the other two, collecting information from each of them and retrieving it.
What I want to be able to do is re-route the requests that Zuul receives at the beginning of the process, to redirect them through particular services, using URL parameters to determine which process should be aimed instead of another.
I already have created a filter tagged with the @Component
annotation, implementing ZuulFilter
. What I don't know, is how to make the redirections work, and which methods to use.
So, the question is : How can I redirect incoming requests to different registered services, using URL parameters ?
There are four types of standard filters in Zuul: pre for pre-routing filtering, route for routing to an origin, post for post-routing filters, and error for error handling.
Zuul is the front door for all requests from devices and web sites to the backend of the Netflix streaming application. As an edge service application, Zuul is built to enable dynamic routing, monitoring, resiliency and security.
Zuul's rule engine lets rules and filters be written in essentially any JVM language, with built-in support for Java and Groovy.
Zuul creates a Hystrix circuit breaker for each route (serviceId). It means that one Hystrix circuit breaker will be shared between your all instances of payment-services. The circuit breaker that Zuul creates for each route is not for removing an unhealthy instance from the routing list.
Look at PreDecorationFilter
for an example that matches routes based on the url path (ie /myservice
). If it matches a full url it sets the routeHost
in the ribbon context, otherwise it sets serviceId
(which would use ribbon to route). You would need to write something similar that would match on parameter instead.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With