Nacos与OpenFeign开发
1.前言
我的话是微服务B调用微服务A的controller层
2.生产者
微服务A请求接口如下:
@GetMapping("/listUniteProdPrice") public AjaxResult listUniteProdPrice(){ return AjaxResult.success(productService.listUniteProdPrice()); }
3.消费者
为了便于管理,创建一个文件夹名为client,与service、mapper层统计,接口命名规则为xxxFeignService,表明是远程调用的接口;FeignClient注解
的值是微服务A的spring.application.name
@FeignClient(value="MICRO-A",fallbackFactory = IProductFallback.class) @Component public interface IProductFeignService { @GetMapping("/product/listProductByDeptId") AjaxResult listProductByDeptId(@RequestParam("deptId") Long deptId); @GetMapping("/product/listUniteProdPrice") AjaxResult listUniteProdPrice(); }
同时需要在启动类添加注解,并标明远程调用接口的文件夹在哪个位置
@EnableFeignClients({"com.workflow.oa.client"})
4.扩展
加入hystrix/sentinel断路器...
如果接口长时间没有返回或报错,返回消息给前台
@Slf4j public class IProductFallback implements FallbackFactory<IProductService> { @Override public IProductService create(Throwable cause) { log.error("获取产品数据调用失败:{}", cause.getMessage()); return new IProductService() { @Override public AjaxResult listProductByDeptId(Long deptId) { return AjaxResult.error("获取产品数据调用失败:{}", cause.getMessage()); } @Override public AjaxResult listUniteProdPrice() { return AjaxResult.error("获取产品数据调用失败:{}", cause.getMessage()); } }; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了