web-dev-qa-db-ja.com

Zuulプロキシがルーティングできないため、com.netflix.zuul.exception.ZuulException:転送エラーが発生します

次のような簡単なサービスがあります。

トランザクションコアサービスとトランザクションAPIサービス。

transaction-api-serviceは、transactions-core-serviceを呼び出して、トランザクションのリストを返します。トランザクションAPIサービスは、hystrixコマンドで有効になります。

両方とも以下のサービスIDでEurekaサーバーに登録されています:

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

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

URLでtransactions-api-serviceを呼び出そうとすると(http://localhost:8765/transactions/accounts/123/transactions/786)Zuul Exceptionが発生します。

2016-02-13 11:29:29.050 WARN 4936 --- [nio-8765-exec-1] o.s.c.n.z.filters.post.SendErrorFilter:フィルタリング中のエラー

com.netflix.zuul.exception.ZuulException: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] ......

Transaction-api-serviceを個別に呼び出した場合(localhost /accounts/123/transactions/786)、正常に動作します。

Zuulの設定がありませんか?

11
user5921551

Zuulサーバーのapplication.ymlに次のプロパティを追加して、zuul実行タイムアウトを変更する必要があります。

# Increase the Hystrix timeout to 60s (globally)
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 60000

Netflixの問題については、このスレッドを参照してください: https://github.com/spring-cloud/spring-cloud-netflix/issues/321

7
Rafik

同じ問題に直面した。私の場合、zuulはサービス検出を使用していました。解決策として、以下の構成は魅力のように機能しました。

ribbon.ReadTimeout=60000

プロパティの使用法への参照は here です。

4
Manish Bansal

誤ったインデントがあります。の代わりに:

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
4
juanlumn

私は同じ問題を抱えていましたが、異なるバージョンのSpring CloudとSpring Bootを使用していることに気付きました。

今私は最新バージョンのfreshを使用しましたが、これはエラーを投げません。

なぜそれが起こったのかはわかりませんが、私は ここに私のリポジトリのリンク を共有しました。

ただし、ルートにアクセスするにはまだエラーが発生しますが、サービスは正常に動作します。

http:// localhost:8060/routes

Start.spring.ioからダウンロードしたプロジェクトを使用しました。

0
Sanjay-Dev