12.OpenFeign 实例(springcloud)

1.OpenFeign 简介
Feign 声明性 ( 注解 ) Web 服务 客户端 。它使编写 Web 服务客户端更加容易。 要使用 Feign 请创建一个接口并对其进行注解 。它具有可插入注解支持,包括 Feign 注解和 JAX-RS 注解。Feign 还支持可插拔编码器和解码器。 Spring Cloud 添加了对 Spring MVC 注解的支持 ,并支持使用 HttpMessageConverters Spring Web 中默认使用的注解。 Spring Cloud 集成了 Ribbon Eureka 以及 Spring Cloud LoadBalancer ,以 在使用 Feign 时提供负载平衡 http 客户端
Feign 是一个 远程调用 的组件 ( 接口,注解 ) http 调用的
Feign 集成了 ribbon
ribbon 里面集成了 eureka
3.OpenFeign 快速入门
3.1 本次调用的设计图

3.2 启动一个 eureka-server 服务,这里不重复演示,参考 eureka文档
3.3 先创建 provider-order-service ,选择依赖

3.4 provider-order-service 修改配置文件
 
server:
  port: 8080
spring:
  application:
    name: order-service
eureka:
  client:
    service-url:
      defaultZone: http://192.168.174.133:8761/eureka

3.5 provider-order-service 修改启动类增加一个访问接口
package com.it.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OrderController {

    @GetMapping("doOrder")
    public String doOrder(){
        return "汉堡-可乐";
    }
}

3.6 provider-order-service 启动测试访问
package com.it;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class OrederService01Application {

    public static void main(String[] args) {
        SpringApplication.run(OrederService01Application.class, args);
    }

}

3.7 再创建 consumer-user-service ,选择依赖
3.8 consumer-user-service 修改配置文件
server:
  port: 8081
spring:
  application:
    name: user-service
eureka:
  client:
    service-url:
      defaultZone: http://192.168.174.133:8761/eureka

3.9 consumer-user-service 创建一个接口(重点)
package com.it.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * @FeignClient(value = "order-service")
 * value:就是提供者的应用名称
 */
@FeignClient(value = "order-service")
public interface UserOrderFeign {

    @GetMapping("doOrder")
    public String doOrder();

}

3.10 consumer-user-service 创建 controller
package com.it.controller;

import com.it.feign.UserOrderFeign;
import com.netflix.discovery.converters.Auto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserControler {

    @Autowired
    public UserOrderFeign userOrderFeign;

    @GetMapping("userDoOrder")
    public String userDoOrder(){
        System.out.println("有用户进来了");
        //发起一个远程调用
        String s = userOrderFeign.doOrder();
        return s;
    }
}

3.11 consumer-user-service 修改启动类
package com.it;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class UserService02Application {

    public static void main(String[] args) {
        SpringApplication.run(UserService02Application.class, args);
    }

}

3.12 启动调用测试

3.13 本次调用总结
consumer-user-service--- /userDoOrder --- 》通过 feign 调用 /doOrder ---
provider-order-service 下单成功
3.14 调用超时设置

server:
  port: 8081
spring:
  application:
    name: user-service
eureka:
  client:
    service-url:
      defaultZone: http://192.168.174.133:8761/eureka
#feign 只是帮你封装了远程调用的功能,底层还是ribbon,所以修改默认等待时间需要修改ribbon的时间
ribbon:
  ReadTimeout: 3000 #给3s的超时时间
  ConnectTimeout: 3000 #连接服务的超时时间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一道光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值