zuul No route found for uri:

一个web项目连接zuul网关连接后台多个服务。

示例:web端使用feignClient

package com.mark.demo.security.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.mark.demo.security.base.PaginateResult;
import com.mark.demo.security.entity.Menu;
import com.mark.demo.security.service.hystrix.MenuFeignFallBackFactory;
import com.mark.demo.security.service.hystrix.MenuFeignServiceHystrix;

/*
*hxp(hxpwangyi@126.com)
*2017年9月7日
*
*/
@FeignClient(name="menu",url="http://localhost:9999/service/menu",fallbackFactory=MenuFeignFallBackFactory.class)
@RequestMapping("/service/menu")
public interface MenuFeignService {
	@RequestMapping("/getMenuTopLever")
	List<Menu> getMenuTopLever();
	@RequestMapping("/getMenuChildren")
	List<Menu> getMenuChildren(@RequestParam("pid")int pid);
	@RequestMapping("/updateMenu")
	boolean updateMenu(@RequestBody Menu menu);
	@RequestMapping(value="/list/data",method=RequestMethod.POST)
	PaginateResult<Menu> listData(@RequestParam("menu") Menu menu,@RequestParam("pageSize")int pageSize,@RequestParam("currentPage")int currentPage);
	
}	

zuul配置:

zuul.strip-prefix=true

zuul.routes.menu.path=/service/menu/**
zuul.routes.menu.service-id=menuService2

zuul.routes.resource.path=/service/resource**
zuul.routes.resource.service-id=resourceService

zuul.routes.user.path=/zuul/user/**
zuul.routes.user.service-id=userService

zuul.routes.commonRedis.path=/service/redis/common/**
zuul.routes.commonRedis.service-id=redisService

调试时发现404错误:日志打印zuul No route found for uri:


跟踪代码发现/zuul的默认context-path是/zuul,它会裁剪请求的url

加上一个配置

zuul.servlet-path=/


就可以调通了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: com.netflix.zuul.exception.ZuulException是一个Zuul网关抛出的异常,表示在处理请求时出现了问题。它可能是由于Zuul配置错误、网络问题或后端服务故障等原因引起的。 ### 回答2: com.netflix.zuul.exception.zuulexception是Zuul网关中的一个异常类,表示Zuul无法处理请求或响应的情况。它通常是由以下几种原因引起的: 1. 路由配置错误:可能是因为路由规则没有正确配置,或者目标服务不可用而导致请求无法路由到正确的目标。 2. 过滤器异常:Zuul通过过滤器来处理请求和响应,如果过滤器出现异常,可能会导致Zuul无法继续进行处理。 3. 网络错误:如果请求的目标服务不可用或网络出现故障,Zuul可能无法将请求路由到目标服务,并抛出该异常。 4. 超时:如果服务调用超时,Zuul可能会抛出该异常。 如果我们遇到了com.netflix.zuul.exception.zuulexception异常,我们需要进行以下几个步骤来诊断和解决问题: 1. 检查路由规则是否正确:我们可以检查Zuul的路由规则是否正确配置,如果出现问题可以进行修改。 2. 检查过滤器是否异常:我们可以检查过滤器的日志或代码,查看是否出现异常,如果有可以进行修复。 3. 检查目标服务是否可用:我们需要检查目标服务是否正常运行,是否配置正确,以及网络是否正常。 4. 检查调用超时时间:如果超时时间设置过长,可能会导致请求无法正常响应,我们可以适当调整超时时间。 总之,com.netflix.zuul.exception.zuulexception是Zuul框架中常见的异常之一,我们需要仔细分析问题来源并进行相应的解决。 ### 回答3: com.netflix.zuul.exception.ZuulException是Netflix开源的分布式中间件框架Zuul的异常类,用于表示Zuul网关服务执行时发生的异常情况。该异常类通常会被抛出到Spring Boot的错误处理器中,用于处理Zuul网关服务的异常情况。 Zuul是Netflix开源的一款分布式服务网关,用于统一对外服务接口的访问,帮助客户端消费端和接口提供端之间实现解耦、灰度发布、流量控制、安全认证等功能,是构建微服务架构的重要组件之一。 ZuulException是Zuul框架中最常见的异常之一,它通常会在以下情况下被抛出: 1. 当Zuul网关服务无法正确处理客户端请求时,可能会抛出ZuulException。例如,请求的目标服务不可用,请求超时,请求过于频繁等情况都可能会导致Zuul异常。 2. 当Zuul网关服务无法将请求转发到正确的服务时,也可能会抛出ZuulException。例如,请求的URL路径错误,请求的参数不正确,请求的目标服务不存在等情况都可能会导致Zuul异常。 3. 当Zuul网关服务在执行服务过程中发生未知错误时,也可能会抛出ZuulException。例如,请求的数据格式错误,网关服务内部异常等情况都可能会导致Zuul异常。 为了避免出现Zuul异常,我们可以采取以下措施: 1. 对于向下游服务的可靠请求,我们应该在请求重试和超时控制方面做好相关配置,以避免服务不可用导致的异常情况。 2. 我们应该在网关层面对请求进行统一的参数校验,确保请求的正确性,例如请求的URL是否正确,参数是否符合规范等。 3. 我们应该对于网关服务内部执行的异常情况进行统一的处理,例如通过熔断机制避免请求的过载等。 总之,对于Zuul异常,我们应该积极做好异常处理和预防工作,以确保分布式服务网关能够正常和可靠地为应用服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值