Spring Cloud Feign是基于Netflix feign实现,整合了spring cloud ribbon 以及spring cloud hystrix,支持注解的方式
使用前提,引入jar包以及在启动类中添加注解@EnableFeignClients
,它的作用是能够扫描带有t@FeignClien
注解的类。
使用方法
@FeignClient(name = "admin", fallback = IPFeignFallback.class)
public interface IPFeign {
@GetMapping("/IP/query")
ResultUtil<String> queryIP();
@PostMapping("/IP/save")
ResultUtil<String> save(String id);
@DeleteMapping("IP/delete")
ResultUtil<String> delete(String id);
}
name="admin"
中admin为ServerId即eureka页面中的application中的名称,
fallback
为回调函数,回调函数为当前接口的实现类,入下所示
@Service
public class IMNoticeService implements IIMNoticeService {
@Override
public ResultUtil<String> sendMessage(String message) {
return null;
}
@Override
public ResultUtil<String> receivemessage(String message) {
return null;
}
@Override
public ResultUtil<String> querymessage(String message) {
return null;
}
}
注意:如果出现第三方服务调用没有反应,并且第三方服务正常的情况下,需要注意启动类注解中是否添加了@EnableFeignClients
报错解决方法
Caused by: java.lang.IllegalStateException: Method has too many Body parameters: public abstract com.sgcc.comm.util.ResultUtil com.sgcc.dls.imnotice.feign.NoticeServerFeign.sendToUser(java.lang.String,java.lang.String)
ResultUtil sendToUser(@RequestParam String userId,@RequestParam String noticeMessag);
加上注解 @RequestParam
注意:在fallback没有起作用的时候用该查看是否开启了hystrix
#开启hystrix(容错机制,使feign的fallback生效)
feign:
hystrix:
enabled: true
网友评论