二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

1、项目模块介绍

二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
2、 父项目主要依赖 spring-cloud 的 版本控制
<properties><!--springCloud 版本--><scd.version>Dalston.SR4</scd.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${scd.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>3、 eureka 模块3.1 主要依赖<!--eureka 注册中心 依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency>3.2 配置信息【二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断】# 端口server:port: 8096# 服务名spring:application:name: edocmall-eureka# eureka 服务注册与发现 配置eureka:client:#Eureka 监控页面service-url:defaultZone: http://127.0.0.1:${server.port}/eurekaregister-with-eureka: false # 是否注册自己的服务到注册中心,默认为trueon-demand-update-status-change: false # 是否主动拉取其他注册的服务信息,默认也是true3.3 主启动类上的注解@EnableEurekaServer //eureka服务端启动,可以就接受别人来注册3.4 测试 访问启动项目,访问 http://localhost:8096
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
4、server 服务提供模块4.1 主要依赖<!--eureka 客户端依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency>4.2 配置信息# 端口server:port: 8097# 服务名配置,eureka注册信息,服务调用基于服务名,必须增加spring:application:name: edocmall-server#数据源配置datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/kh96_springboot_edocbd?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMTusername: rootpassword: root# mybatis-plus 配置mybatis-plus:configuration:map-underscore-to-camel-case: true# eureka 注册中心的配置eureka:client:service-url:defaultZone: http://127.0.0.1:8096/eureka# 注册中心的地址# 关闭自我保护机制,保证不可用的服务及时剔除server:enable-self-preservation: false4.3 代码介绍
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
4.4 主启动类上的注解@MapperScan("com.kgc.scd.mapper")@EnableEurekaClient // 开启 eureka 服务注册,将此服务注册到 eureka中4.5 请求测试服务提供端的请求最好先单独测试一下,成功后再进行远程调用;
二 SpringCloud - Eureka注册中心,feign远程调用,hystrix降级和熔断

文章插图
5、 web 服务消费模块5.1 使用restTemplate 调用5.1.1主启动类向容器中放入 restTemplate@SpringBootApplicationpublic class Edocmall96WebApplication {public static void main(String[] args) {SpringApplication.run(Edocmall96WebApplication.class, args);}//往容器中添加 restTemplate@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}}5.1.2请求中直接调用具体url下的请求@RestControllerpublic class WebEntryController {@Autowiredprivate RestTemplate restTemplate;// 根据文档编号,获取文档详情@GetMapping("/entryById")public RequestResult<EdocEntryVO> entryDetail(Integer id){log.info("------ 根据文档编号:{},获取文档详情 ------",id);//模拟发送http请求请求server端,获取文档详情//弊端:消费端,必须在程序内,记录提供者的ip地址,如果地址出现变更,还需要计时更新,如果服务者有多个及其,无法实现负载均衡EdocEntryVO edocEntryVO = restTemplate.getForObject("http://127.0.0.1:8097/entry?id="+id,EdocEntryVO.class);return ResultBuildUtil.success(edocEntryVO);}}

经验总结扩展阅读