每日笔记8.16

openfeign介绍

声明式 WebService 客户端,可以代替RestTemplate实现uri请求

eg:RestTemplate实现服务请求

config层配置RestTemplate类

@Configuration
public class CustomizationBean {

    //返回RestTemplate对象,用于http发送,如post get
    @Bean
    @LoadBalanced //这个表示给RestTemplate 负载均衡的能力,用轮询算法(eg:先10001再10002,再10001 。。。)去选择某个服务去访问
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

}

controller层配置

通过restTemplate.getForObject  get方式 请求对应10001、10002服务

    //定义一个url地址 对应 member-service-provider-10000服务
//    public static final String MEMBER_SERVICE_PROVIDER_URL =
//            "http://localhost:10001"
    public static final String MEMBER_SERVICE_PROVIDER_URL =
            "http://MEMBER-SERVICE-PROVIDER";
    //MEMBER-SERVICE-PROVIDER :表示服务提供方集群,对外暴露的名称,对应k-v值为10001和10002两个微服务
    //通过@LoadBalanced注解到RestTemplate,就会用轮询算法选择哪个v值。
//根据id找到member数据
@GetMapping(value = "/member/consumer/get/{id}")
public Result<Member> getMemberById(@PathVariable("id") Long id) {

    log.info("service-consumer id = {}",id);

   return restTemplate.getForObject(MEMBER_SERVICE_PROVIDER_URL+"/member/get/"+id,Result.class);

}

运行类配置

@EnableEurekaClient//配置eureka客服端
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableDiscoveryClient //启用 服务发现
@RibbonClient(name = "MEMBER-SERVICE-PROVIDER",configuration = RibbonRule.class)
//指定负载均衡算法为RibbonRule类中的myRibbonRule(RandomRule算法)
public class MemberConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(MemberConsumerApplication.class, args);
    }
}

eg:openfeign实现服务请求

service层

只需要配置对应10001、10002服务uri请求的方法接口即可

@Component
@FeignClient(value = "MEMBER-SERVICE-PROVIDER")//member-service-provider对应eureka server中的k-v的k值
public interface MemberFeignService {

    //定义远程调用的接口

    //  MEMBER-SERVICE-PROVIDER和/member/get/{id}组合
    // 成为 http://localhost:10001:/member/get/{id}
    @GetMapping(value = "/member/get/{id}")
    public Result getMemberById(@PathVariable("id") Long id);
}

controller层

只需要调用service层openfeign接口即可

@RestController
public class MemberConsumerController {

    //调用openfeign接口
    @Resource
    private MemberFeignService memberFeignService;

    @GetMapping(value = "member/consumer/openfeign/get/{id}")
    public Result getMemberById(@PathVariable("id") Long id) {

        return memberFeignService.getMemberById(id);
    }
}

运行类配置

只需要开启openfeign  加注解@EnableFeignClients//启用openfeign

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients//启用openfeign
public class MemberConsumerOpenfeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(MemberConsumerOpenfeignApplication.class,args);
    }
}

openfeign日志配置

日志级别

NONE∶默认的,不显示任何日志
BASIC∶仅记录请求方法、URL、响应状态码及执行时间;
HEADERS∶除了 BASIC中定义的信息之外,还有请求和响应的头信息;

FULL∶除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据

config层

配置full级别

@Configuration
public class OpenFeignConfig {

    @Bean
    //FULL∶除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据
    public Logger.Level loggerLevel(){
        return Logger.Level.FULL;
    }
}

application.yml

配置openfeign接口MemberFeignService

打印信息级别为debug

logging:
  level:
    #指定openfeign接口 打印信息-debug级别
    com.zyz.springcloud.service.MemberFeignService: debug

当调用MemberFeignService接口方法时候,后台显示打印信息 

eg:http://localhost/member/consumer/openfeign/get/1

openfeign超时

默认一秒等待返回时间。浏览器发出uri请求后一秒后未收到就会出现 time out

设置超时时间

application.yml

设置2000毫秒

ribbon:
  #建立连接 从服务提供方获取可用资源的所有全部时间
  ReadTimeout: 2000
  #两端连接所用时间
  ConnectionTimeout: 2000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值