一、前言
Feign是Netflix开发的声明式、模板化的HTTP客户端。Feign支持Spring MVC注解,并整合了Eureka,定义一个Feign接口,通过@ FeignClient(“服务名”)来指定调用哪个服务,就可以不用写IP或者冗长的URL,直接调用相关服务的方法,让我们更快捷、优雅地调用HTTP API
同时Feign还集成了负载均衡以及熔断的功能(具体概念及详细介绍见第六篇,第七篇),本篇会对基本的负载均衡进行实现,后续两篇会详细介绍负载均衡策略配置以及熔断的实现。
为模拟实际开发,本篇教程除alh-tms外,所有的参数均从远程配置中心读取,若是不用远程配置中心,请在本地应用直接写各项参数即可。
Spring Cloud版本 | Spring Boot版本 | JAVA | IDE |
Greenwich.SR1 | 2.1.6.RELEASE | 1.8 | IDEA |
涉及项目:
alh-config-server(6001): 保持启动状态
alh-eureka-server(6000): 保持启动状态
alh-tms(8001)
alh-order(8002)
完整教程全部章节目录:https://blog.csdn.net/tuoyun6647/article/details/93501029
二、服务调用
对之前建立的alh-tms做一点改造,首先是配置文件,第一篇中建立的alh-tms的配置文件并未从远程配置中心拉取,此时仍为在本地配置。配置文件增加csinfo属性。application.properties如下:
#应用端口及名称,注册到注册中心后,之后服务与服务之间相互调用一般都是根据spring.application.name调用
server.port=8001
spring.application.name=alh-tms
#配置信息
csinfo=application.properties
#服务注册中心账号密码
security-name=kcsm
security-pwd=kcsm111
#注册中心地址.默认将自己注册在EurekaServer上,eureka.client.register-with-eureka默认为true,无需配置
eureka.client.service-url.defaultZone=http://${security-name}:${security-pwd}@localhost:6000/eureka/
对其启动类做一点改造
package com.kcsm.alh.alhtms;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
@RequestMapping(value = "/application")
public class AlhTmsApplication {
public static void main(String[] args) {
SpringApplication.run(AlhTmsApplication.class, args);
}
/**
* @description 检查当前使用的是哪个远程配置文件
*
* @return [String]配置文件名称
* @author lqk
* @date 2019/06/19
*/
@Value("${csinfo}")
String csinfo;
@Value("${server.port}")
String