SpringCloud openFeign 報錯:feign.FeignException: status 404 reading UserMessageClient
阿新 • • 發佈:2018-11-01
在服務提供commons暴露介面:
@FeignClient(value = "COMMONS",fallback =UserMessageClient.UserMessageClientFallback.class) public interface UserMessageClient { @RequestMapping(value = "/user/sendMessage",method = RequestMethod.POST) boolean userLoginByCode(@RequestParam(value = "phone", required = true) String phone); @Component static class UserMessageClientFallback implements UserMessageClient{ @Override public boolean userLoginByCode(String phone) { return false; } } }
配置檔案:
eureka:
client:
service-url:
defaultZone: http://132.232.173.122:8761/eureka/
在服務呼叫user上呼叫介面:
@RestController() @RequestMapping("/userRegister") public class HomeController { @Autowired UserMessageClient userMessageClient; @Value("${person.sex}") private String dev; @PostMapping("/index") public ResultVo<Map<String, String>> index(@Phone @RequestParam String phone, Map<String,Object> map){ boolean flage=false; try { flage= userMessageClient.userLoginByCode(phone); }catch (Exception e){ throw new BusinessException(ResultEnum.NO_ACCESS); } if (!flage) { map.put("info", "傳送失敗"); return ResultVoUtil.error(ResultEnum.PHONE_SENT_FAIL.getCode(), ResultEnum.PHONE_SENT_FAIL.getMsg()); }else { map.put("info", "傳送成功"); return ResultVoUtil.success(map); } }
bootstrap.yml檔案配置:
spring:
cloud:
config:
discovery:
enabled: true
service-id: config
label: master
profile: dev
eureka:
client:
service-url:
defaultZone: http://132.232.173.122:8761/eureka/
服務呼叫是出現feign.FeignException: status 404 reading UserMessageClient
後查是在commons服務上配置了path
server:
port: 7979
servlet:
context-path: /commons
所以在介面的@FeignClient註解上新增path值
@FeignClient(value = "COMMONS", path = "/commons",fallback =UserMessageClient.UserMessageClientFallback.class)
public interface UserMessageClient {
@RequestMapping(value = "/user/sendMessage",method = RequestMethod.POST)
boolean userLoginByCode(@RequestParam(value = "phone", required = true) String phone);
@Component
static class UserMessageClientFallback implements UserMessageClient{
@Override
public boolean userLoginByCode(String phone) {
return false;
}
}
}
解決,記錄。