暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SpringCloud--服务调用

Java有货 2018-11-28
141
点击上方"Java有货"关注我们

导言

       本篇文章将讲述服务发现与调用,将围绕Feign实现,为更好理解本篇文章,您可以阅读往期《springCloud--服务高可用》

      本文的内容都是讲往期的内容进行改造,推荐您阅读往期关于《SpringCloud》相关内容!

服务调用
输入标题
POM文件

01

consumer项目
<dependencies>
       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
       </dependency>

       <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-test</artifactId>
           <scope>test</scope>
       </dependency>

       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
           <version>2.0.1.RELEASE</version>
       </dependency>

       <!-- SpringBoot整合fegnin客户端 在Consumer项目内新增 -->
       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-openfeign</artifactId>
           <version>2.0.1.RELEASE</version>
       </dependency>
   </dependencies>


02

 order-api-server项目
<dependencies>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
</dependencies>


03

服务调用-order-api-server-impl项目
<dependencies>
       <dependency>
           <groupId>com.javayh</groupId>
           <artifactId>consumer</artifactId>
           <version>0.0.1-SNAPSHOT</version>
           <scope>compile</scope>
       </dependency>
       <dependency>
           <groupId>com.javayh</groupId>
           <artifactId>order-api-server</artifactId>
           <version>0.0.1-SNAPSHOT</version>
           <scope>compile</scope>
       </dependency>
   </dependencies>

配置文件
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配置文件如上

业务实现

01

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;
  }
}

02

order-api-server
public interface IOrderService {
   // 订单服务接口
   @GetMapping("/orderInfo")
   public String orderInfo();
}

注:

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

03

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();
   }
}

效果展示

注:

这里我们可以看出来,现在访问8088,确实现了远程RPC调用,为了方便区分,小编还特意在后面加上了端口号!

注册中心

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

小编寄语

小编创建了一个关于Java学习讨论的微信群!想进去的可以联系小编!同时也欢迎大家点赞与转发!

小编微信:372787553

备注为进群,通过后小编会邀请您进群!

Ja
va
文章转载自Java有货,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论