开始采坑
第一: 检查服务提供方是否启动。
第二:检查注解 @FeignClient 中的值是否配置正确
name/value:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现
path:定义当前FeignClient的统一前缀
url:url一般用于调试,可以手动指定@FeignClient调用的地址
decode404:当发生http 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException
configuration:Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contract
fallback:定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现 @FeignClient标记的接口
fallbackFactory:工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码
首先必须配置@FeignClient 的name 属性,feign通过这个名称去匹配调用方具体的服务
另外,如果提供方的服务如果指定了server.servlet.context-path,那么一定要在path中配置前缀(就是context-path的值)
再不行,就直接配置url地址调试一下看是否能通
配置示例:
/**
* @ClassName: xxxServerxxxModleFeign
* @Description: xxx接口
* @Author Gavino
* @Date 2020-10-19 14:03
*/
@FeignClient(name = "xxxServer", path = "/xxxServer/xxxModle") //xxxServer: 服务名称,/xxxServer/xxxModle:xxxServer是context-path的名称,xxxModle是某个模块名称
public interface xxxServerxxxModleFeign {
@RequestMapping(value = "/select", method = RequestMethod.POST) //select是具体Controller方法上的地址
ActionResult select(@RequestBody JSONObject param);
@RequestMapping(value = "/queryPageListByWhere", method = RequestMethod.POST)
ActionResult queryPageListByWhere(@RequestBody JSONObject param);
@RequestMapping(value = "/selectAll", method = RequestMethod.POST)
ActionResult selectAll();
}