zoukankan      html  css  js  c++  java
  • 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());
                }
            };
        }
    }
    
  • 相关阅读:
    [Js-JDBC]事务
    [Js-JDBC]SQL注入及解决,Statement与PreparedStatement
    [Js-Java SE]IO+Properties配置文件
    [Js-Java SE]可变长参数
    [Js-Java SE]线程同步(加锁)(synchronized,守护进程,死锁,计时器)
    [Js-MySQL]函数
    [Js-MySQL]运算符优先级
    2015年3月30日
    Maven知识点一览
    记一次MySQL(5.7版本)数据库的主从同步和备份
  • 原文地址:https://www.cnblogs.com/lhxBlogs/p/15094274.html
Copyright © 2011-2022 走看看