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?
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
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
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 .
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.