Without this change the health status is always UNKNOWN because it
never finds the servo metrics for the health indicator. It's also
a general spruce up of the servo and eureka metrics and health
infrastructure which was looking a little more complicated than
it needed to be (no need for a separate MetricReader).
Using Spring as an object factory to control the lifecycle of ribbon clients.
So far we have a single, parameterized configuration class for all clients, but
can be extended to allow user to supply additional configuration. The current
model for user extensions is
@EnableRibbonClient(@RibbonClient(name = "foo", configuration = FooConfiguration.class))
public class MainConfiguration {
...
}
So in this example, MainConfiguration is part of the "main" application context
and FooConfiguration is used to create the Ribbon client and load balancer for
the "foo" service.
The default behaviour is now to strip the prefixes (global and
route-specific) by default. E.g.
zuul:
prefix: /api
routes:
customers: /customers/**
Will forward /api/customers/101 to /101 on the customers service
See gh-43
Handle InstanceRegisteredEvent and RefreshScopeRefreshedEvent in ZuulHandlerMapping rather than ProxyRouteLocator.
Move /routes endpoint out of ZuulHandlerMapping into RoutesEndpoint (because of a problem when I added @RefreshScope to ZuulHandlerMapping)
We now support prefix stripping per service, e.g.
zuul:
routes:
customers:
path: /customers/**
stripPrefix: true
Will route /customers/101 -> /101 (on the customers service)
See gh-77
User can now specify zuul.routes.*.{path,url,serviceId} (with
"url" and "serviceId" mutually exclusive (and "location" is a
synonym) separately, or can use a one-one short form, like the
old style.
See gh-77
Bean instantiation ordering was causing external (user-supplied)
filter beans to replace the defaults, not append to them. Separating
out the autowired map of beans into a spearate class was enough to
fix it.
Fixes gh-78