Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating custom Zuul filters

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 ?

like image 741
chesh Avatar asked Jun 25 '15 16:06

chesh


People also ask

What type of filters can a Zuul service provide?

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.

Does Netflix use Zuul?

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.

What language is Zuul written in?

Zuul's rule engine lets rules and filters be written in essentially any JVM language, with built-in support for Java and Groovy.

Does Zuul automatically uses Hystrix?

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.


1 Answers

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.

like image 79
spencergibb Avatar answered Sep 21 '22 14:09

spencergibb