2016-02-13 53 views
7

我有簡單的服務:Zuul代理不能路線,導致com.netflix.zuul.exception.ZuulException:轉發錯誤

交易爲核心的服務和交易的API服務。

transactions-api-service調用transactions-core-service來返回事務列表。通過hystrix命令啓用transactions-api-service。

兩者都登記在尤里卡服務器與下面的服務標識:

TRANSACTIONS-API-SERVICE n/a (1) (1) UP (1) - 192.168.2.12:transactions-api-service:8083 
TRANSACTIONS-CORE-SERVICE n/a (1) (1) UP (1) - 192.168.2.12:transactions-core-service:8087 

下面是Zuul服務器:

@SpringBootApplication 

@Controller 

@EnableZuulProxy 

public class ZuulApplication { 

    public static void main(String[] args) { 
     new SpringApplicationBuilder(ZuulApplication.class).web(true).run(args); 
    } 
} 

Zuul配置:

=============================================== 

info: 
    component: Zuul Server 

server: 
    port: 8765 

endpoints: 
    restart: 
    enabled: true 
    shutdown: 
    enabled: true 
    health: 
    sensitive: false 

zuul: 
    ignoredServices: "*" 
    routes: 
    transactions-api-service: 
    path: transactions/accounts/** 
    serviceId: transactions-api-service 

eureka: 
    client: 
    serviceUrl: 
     defaultZone: http://localhost:8761/eureka/ 

logging: 
    level: 
    ROOT: INFO 
    org.springframework.web: DEBUG 

=============================================== 

當我嘗試調用交易-api服務與URL(http://localhost:8765/transactions/accounts/123/transactions/786)我得到Zuul例外:

2016年2月13日11:29:過濾

com.netflix.zuul期間錯誤:29.050 WARN 4936 --- [NIO-8765-EXEC-1] oscnzfilters.post.SendErrorFilter .exception.ZuulException:轉發錯誤 at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward(RibbonRoutingFilter.java:131) 〜[spring-cloud-net flix-core-1.1.0.M3 .jar:1.1.0.M3] at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.run(RibbonRoutingFilter.java:76) 〜[spring-cloud-netflix-core-1.1.0。 M3.jar:1.1.0.M3] ......

如果我單獨調用transactions-api-service(使用localhost /accounts/123/transactions/786),它工作正常。

我是否缺少Zuul上的任何配置?

回答

1

你有一個不正確的縮進。相反的:

zuul: 
    ignoredServices: "*" 
    routes: 
    transactions-api-service: 
    path: transactions/accounts/** 
    serviceId: transactions-api-service 

它應該是:

zuul: 
    ignoredServices: "*" 
    routes: 
    transactions-api-service: 
     path: transactions/accounts/** 
     serviceId: transactions-api-service