SpringCloud--Feign实现服务调用

序言

本篇文章将讲述服务发现与调用,将围绕Feign实现,为更好理解本篇文章,您可以阅读往期《springCloud–服务高可用》
本文的内容都是讲往期的内容进行改造,推荐您阅读往期关于《SpringCloud》相关内容!

服务调用

POM文件
  1. consumer项目

       
           org.springframework.boot
           spring-boot-starter-web
       

       
           org.springframework.boot
           spring-boot-starter-test
           test
       

       
           org.springframework.cloud
           spring-cloud-starter-netflix-eureka-client
           2.0.1.RELEASE
       

       
       
           org.springframework.cloud
           spring-cloud-starter-openfeign
           2.0.1.RELEASE
       
   
  1. order-api-server项目

   
       org.springframework.boot
       spring-boot-starter-web
   

  1. 服务调用-order-api-server-impl项目

       
           com.javayh
           consumer
           0.0.1-SNAPSHOT
           compile
       
       
           com.javayh
           order-api-server
           0.0.1-SNAPSHOT
           compile
       
   
配置文件
server:
 port: 8088
spring:
 application:
   name: app-order
eureka:
 instance:
   hostname: localhost
 client:
   register-with-eureka: true
   fetch-registry: true
   service-url:
     defaultZone: http://${eureka.instance.hostname}:8081/eureka/,http://${eureka.instance.hostname}:8084/eureka/
feign:
 hystrix:
   enabled: true
ribbon:
ReadTimeout: 5000
ConnectTimeout: 5000

注:

1、consumer项目不变
2、order-api-server项目不需要配置文件
3、order-api-server-impl配置文件如上

业务实现
  1. consumer项目
//接口
public interface IConsumerService {

  @GetMapping("/getUserInfo")
  public String getUserInfo();
}

//实现
RestController
public class TestController implements IConsumerService {

  @Value(value = "${server.port}")
  private String port;

  @Override
  public String getUserInfo() {
      System.out.println(" 我是会员服务,会员服务调用订单服务开始啦!!");
      try {
          // 会员服务接口产生1.5秒的延迟
          Thread.sleep(1500);
      } catch (Exception e) {
          // TODO: handle exception
      }
      return "订单服务接口调用会员服务接口成功------->调用的端口为:"+port;
  }
}
  1. order-api-server
public interface IOrderService {
   // 订单服务接口
   @GetMapping("/orderInfo")
   public String orderInfo();
}

注:这里的封装,是为了后期的服务降级做准备

  1. order-api-server-impl
@RestController
public class OrderServiceImpl {

   @Autowired
   private IConsumerService consumerService;

   @GetMapping("/orderToFeign")
   public String orderToFeign() {
       System.out.println("orderToFeign:" + "线程池名称:" + Thread.currentThread().getName());
       return consumerService.getUserInfo();
   }
}

效果展示

在这里插入图片描述

注册中心

SpringCloud--Feign实现服务调用_第1张图片

本文到此就实现了Feign客户端的调用,希望对正在学习的您有所帮助!不足之处还请大家包涵!下篇我们将讲述服务的容错!

小编寄语

小编创建了一个关于Java学习讨论的微信群!想进去的可以联系小编!同时也欢迎大家点赞与转发! 小编微信:372787553
备注为进群,通过后小编会邀请您进群! 大家也可以关注小编的微信公众号《Java有货》,里边有更多的资源!
SpringCloud--Feign实现服务调用_第2张图片

你可能感兴趣的:(SpringCloud)