eureka-wiki
POM依赖:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19.1</version>
</dependency>
实现抽象类ClientFilter的handle方法
public class IpCilentFilter extends ClientFilter {
@Override
public ClientResponse handle(ClientRequest clientRequest) throws ClientHandlerException {
//响应对象的处理
ClientResponse response = this.getNext().handle(clientRequest);
return response;
}
}
注入clientFilter
@Bean
public DiscoveryClientOptionalArgs discoveryClientOptionalArgs() {
DiscoveryClientOptionalArgs discoveryClientOptionalArgs = new DiscoveryClientOptionalArgs();
discoveryClientOptionalArgs.setAdditionalFilters(Collections.singletonList(new IpCilentFilter()));
return discoveryClientOptionalArgs;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean registration = new FilterRegistrationBean(new ServerRequestAuthFilter());
registration.addUrlPatterns("/*");
return registration;
}
public class ServerRequestAuthFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
//业务实现,根据请求的IP或者参数判断是否可以执行注册或者访问
filterChain.doFilter(request, response);
}
}
拦截具体客户端注册、续约、下线请求,请参考 /eureka/apps
com.netflix.eureka.resources.ApplicationResource
eureka:
client:
fetch-registry: true