我尝试实现的是路由,例如:
http://zuul-host:8080/v1/foo/hello
到我的服务foo-v1
、资源hello
我正在尝试http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html中描述的regexmapper示例
我的问题是我看到一个名为的服务foo-v1
被映射到/v1/foo
,PatternServiceRouteMapper
但是我无法调用该路由。也看不到/mappings
。我必须在某处激活该路线吗?
设置
福服务
application.properties
server.port=9092
spring.application.name=foo-v1
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
eureka.instance.healthcheck.enable=true
祖尔
我的配置类Routings.java
。我为服务映射添加了一些 sysout 日志输出,然后我进入foo-v1 -> v1/foo
了日志。因此这个映射应该是活跃的。
@Configuration
public class Routings {
@Bean
public PatternServiceRouteMapper serviceRouteMapper() {
return new PatternServiceRouteMapper(
"(?<name>^.+)-(?<version>v.+$)",
"${version}/${name}") {
@Override
public String apply(final String serviceId) {
String route = super.apply(serviceId);
System.out.println(serviceId + " -> " +route);
return route;
}
};
}
}
我的ZuulApplication.java
@SpringBootApplication
@EnableZuulProxy
@ComponentScan
public class ZuulApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulApplication.class, args);
}
@RefreshScope
@ConfigurationProperties("zuul")
public ZuulProperties zuulProperties() {
return new ZuulProperties();
}
}