导言
本篇文章将讲述服务发现与调用,将围绕Feign实现,为更好理解本篇文章,您可以阅读往期《springCloud--服务高可用》
本文的内容都是讲往期的内容进行改造,推荐您阅读往期关于《SpringCloud》相关内容!
01
<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
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
03
<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
//接口
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
public interface IOrderService {
// 订单服务接口
@GetMapping("/orderInfo")
public String orderInfo();
}
注:
这里的封装,是为了后期的服务降级做准备
03
@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
备注为进群,通过后小编会邀请您进群!

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




