如何通过feign调用spring cloud gateway代理的服务
今天又同事问在浏览器输入http://gateway_host:gateway_port/serviceId/** 格式的url能访问到具体服务,且进入到自定义的gateway过滤器但是通过feign访问注册到eureka server上的服务时却没有通过自定义的过滤器,是否说明没经过gateway网关?如何做能使feign通过gateway来访问注册到eureka的服务呢?归结起来就是:co..
今天有同事问在浏览器输入http://gateway_host:gateway_port/serviceId/** 格式的url能访问到具体服务,且进入到自定义的gateway过滤器
但是通过feign访问注册到eureka server上的服务时却没有通过自定义的过滤器,是否说明没经过gateway网关?如何做能使feign通过gateway来访问注册到eureka的服务呢?
归结起来就是:consumer调用provider是如何通过feign经过网关调用的。
其实很简单:
只要在provider端提供的feign接口暴露的接口@FeignClient指定value,值为eureka中网关的Application应用名microservice-gateway,此时consumer请求不会直接到provider,而会经过gateway网关。
provider端feign接口相关代码:
@FeignClient(value = "microservice-gateway", fallback = WxtServiceHystrix.class)
public interface IWxtService {
@PostMapping("/wxt/v1/queryStaffStatus")
BaseRespVo<StaffStatusResqVo> queryStaffStatus(@RequestBody @Valid BaseReqVo<StaffStatusReqVo> parame);
}
consumer端调用相关代码:
@RestController
public class ConfigAction {
@Autowired
IWxtService wxtService;
@GetMapping("/querywxt")
public BaseRespVo<StaffStatusResqVo> querywxt() {
BaseReqVo<StaffStatusReqVo> baseReqVo = new BaseReqVo<>();
.......
baseReqVo.setData(data);
return wxtService.queryStaffStatus(baseReqVo);
}
注意启动类,需要添加注解:@EnableFeignClients(basePackages = "com.uaf.k3.feign")
必须指定@EnbaleFeignClients的basePackages属性才行。否则可能会出现找不到类问题。
Field xxx in xxx required a bean of type 'com.wxt.feign.IWxtService' that could not be found.
更多推荐
所有评论(0)