web-dev-qa-db-fra.com

Le proxy Zuul n'est pas en mesure de router, ce qui entraîne com.netflix.zuul.exception.ZuulException: erreur de transmission.

J'ai des services simples comme:

transactions-core-service et transactions-api-service.

transactions-api-service appelle transactions-core-service pour renvoyer une liste de transactions. transactions-api-service est activé avec la commande hystrix.

Les deux sont enregistrés sur le serveur Eureka avec les identifiants de services ci-dessous:

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

Ci-dessous, le serveur Zuul:

@SpringBootApplication

@Controller

@EnableZuulProxy

public class ZuulApplication {

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

Configurations 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

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

Lorsque j'essaie d'appeler transactions-api-service avec url (http://localhost:8765/transactions/accounts/123/transactions/786), je reçois une exception Zuul:

2016-02-13 11: 29: 29.050 WARN 4936 --- [nio-8765-exec-1] o.s.c.n.z.filters.post.SendErrorFilter: erreur lors du filtrage

com.netflix.zuul.exception.ZuulException: erreur de transmission à org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward (RibbonRoutingFilter.Java:131) ~ [printemps-cloud-net flix-core-1.1.0.M3.jar: 1.1.0.M3] à 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] ......

Si j'appelle les transactions-api-service individuellement (avec localhost /accounts/123/transactions/786), cela fonctionne bien.

Me manque-t-il des configurations sur Zuul?

9
user5921551

Vous devez modifier le délai d’exécution de zuul en ajoutant cette propriété dans application.yml du serveur zuul:

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

Veuillez vous référer à ce fil sur les problèmes de netflix: https://github.com/spring-cloud/spring-cloud-netflix/issues/321

7
Rafik

Vous avez une indentation incorrecte. Au lieu de: 

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

CA devrait etre:

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

Face au même problème. Dans mon cas, zuul utilisait la découverte de service. En tant que solution, la configuration ci-dessous a fonctionné à merveille.

ribbon.ReadTimeout=60000

La référence à l'utilisation de la propriété est ici .

0
Manish Bansal

Je commençais à avoir le même problème, puis j’ai réalisé que j’utilisais différentes versions de Spring Cloud et Spring Boot.

Maintenant, j'ai utilisé la dernière version fraîche, qui ne génère aucune erreur. 

Je ne sais pas pourquoi cela s’est produit, mais j’ai partagé le lien de mon dépôt ici , pour que vous puissiez jeter un coup d’œil.

Je reçois toujours une erreur pour accéder aux routes, mais le service fonctionne bien.

http: // localhost: 8060/routes . 

Je viens d'utiliser des projets téléchargés sur start.spring.io. 

0
Sanjay-Dev