2021-07-07

SpringCloud微服务(基于Eureka+Feign+Hystrix+Zuul)

一、搭建注册中心

 1.1、创建一个cloud-service项目

   

 1.2:POM文件依赖

 1 <? 2 <project  3   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4  <modelVersion>4.0.0</modelVersion> 5  6  <groupId>com.tiandy</groupId> 7  <artifactId>cloud-service</artifactId> 8  <version>0.0.1-SNAPSHOT</version> 9  <packaging>jar</packaging> 10  11  <name>cloud-service</name> 12  <description>Demo project for Spring Boot</description> 13  14  <parent> 15   <groupId>org.springframework.boot</groupId> 16   <artifactId>spring-boot-starter-parent</artifactId> 17   <version>1.5.9.RELEASE</version> 18   <relativePath/> <!-- lookup parent from repository --> 19  </parent> 20  21  <properties> 22   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 24   <java.version>1.8</java.version> 25   <spring-cloud.version>Edgware.RELEASE</spring-cloud.version> 26  </properties> 27  28  <dependencies> 29  30   <dependency> 31    <groupId>org.springframework.boot</groupId> 32    <artifactId>spring-boot-starter-web</artifactId> 33   </dependency> 34  35   <dependency> 36    <groupId>org.springframework.cloud</groupId> 37    <artifactId>spring-cloud-starter-eureka</artifactId> 38   </dependency> 39   <!-- @HystrixCommand注解 --> 40   <dependency> 41    <groupId>com.netflix.hystrix</groupId> 42    <artifactId>hystrix-javanica</artifactId> 43   </dependency> 44   <dependency> 45    <groupId>org.springframework.cloud</groupId> 46    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 47   </dependency> 48   <!-- 声明调用 --> 49   <dependency> 50    <groupId>org.springframework.cloud</groupId> 51    <artifactId>spring-cloud-starter-openfeign</artifactId> 52   </dependency> 53   <!-- 服务容错 --> 54   <dependency> 55    <groupId>org.springframework.cloud</groupId> 56    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> 57   </dependency> 58  59   <!--网关zuul--> 60   <dependency> 61    <groupId>org.springframework.cloud</groupId> 62    <artifactId>spring-cloud-starter-netflix-zuul</artifactId> 63   </dependency> 64  65   <!--实体中的Date注解,不用get set--> 66   <dependency> 67    <groupId>org.projectlombok</groupId> 68    <artifactId>lombok</artifactId> 69   </dependency> 70  71  72   <dependency> 73    <groupId>org.springframework.boot</groupId> 74    <artifactId>spring-boot-starter-test</artifactId> 75    <scope>test</scope> 76   </dependency> 77  78  79  </dependencies> 80  81  <dependencyManagement> 82   <dependencies> 83    <dependency> 84     <groupId>org.springframework.cloud</groupId> 85     <artifactId>spring-cloud-dependencies</artifactId> 86     <version>${spring-cloud.version}</version> 87     <type>pom</type> 88     <scope>import</scope> 89    </dependency> 90   </dependencies> 91  </dependencyManagement> 92  93  <build> 94   <plugins> 95    <plugin> 96     <groupId>org.springframework.boot</groupId> 97     <artifactId>spring-boot-maven-plugin</artifactId> 98    </plugin> 99   </plugins>100  </build>101 102 </project>

  1.3:application.yml配置文件

  

  1.4:启动类CloudServiceApplication

 1 package com.tiandy.myclient; 2  3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 import org.springframework.cloud.netflix.eureka.EnableEurekaClient; 6 import org.springframework.cloud.netflix.hystrix.EnableHystrix; 7  8 @EnableEurekaClient 9 @EnableHystrix10 @SpringBootApplication11 public class MyClientApplication {12 13  public static void main(String[] args) {14   SpringApplication.run(MyClientApplication.class, args);15  }16 }

  说明:@EnableEurekaClient是开启Eureka服务注册中心功能注解,@EnableHystrix是开始Hystrix功能注解

   1.5:启动MyClientApplication 服务

    服务启动成功后,访 src="https://img2020.cnblogs.com/blog/1508950/202107/1508950-20210706203741665-2007611340.png" alt="" loading="lazy">

 

二、spring cloud创建服务提供者

    2.1、创建一个my-client项目

    

    2.1:POM文件依赖

 1 <??> 2 <project ="http://maven.apache.org/POM/4.0.0" ="http://www.w3.org/2001/ 3    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4  <modelVersion>4.0.0</modelVersion> 5  6  <groupId>com.tiandy</groupId> 7  <artifactId>my-client</artifactId> 8  <version>0.0.1-SNAPSHOT</version> 9  <packaging>jar</packaging> 10  11  <name>sbc-providers</name> 12  <description>Demo project for Spring Boot</description> 13  14  <parent> 15   <groupId>org.springframework.boot</groupId> 16   <artifactId>spring-boot-starter-parent</artifactId> 17   <version>1.5.9.RELEASE</version> 18   <relativePath/> <!-- lookup parent from repository --> 19  </parent> 20  21  <properties> 22   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 24   <java.version>1.8</java.version> 25   <spring-cloud.version>Edgware.RELEASE</spring-cloud.version> 26  </properties> 27  28  <dependencies> 29  30   <dependency> 31    <groupId>org.springframework.boot</groupId> 32    <artifactId>spring-boot-starter-web</artifactId> 33   </dependency> 34   <dependency> 35    <groupId>org.springframework.cloud</groupId> 36    <artifactId>spring-cloud-starter-eureka</artifactId> 37   </dependency> 38   <!-- @HystrixCommand注解 --> 39   <dependency> 40    <groupId>com.netflix.hystrix</groupId> 41    <artifactId>hystrix-javanica</artifactId> 42   </dependency> 43   <dependency> 44    <groupId>org.springframework.cloud</groupId> 45    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 46   </dependency> 47   <!-- 声明调用 --> 48   <dependency> 49    <groupId>org.springframework.cloud</groupId> 50    <artifactId>spring-cloud-starter-openfeign</artifactId> 51   </dependency> 52   <!-- 服务容错 --> 53   <dependency> 54    <groupId>org.springframework.cloud</groupId> 55    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> 56   </dependency> 57  58   <!--网关zuul--> 59   <dependency> 60    <groupId>org.springframework.cloud</groupId> 61    <artifactId>spring-cloud-starter-netflix-zuul</artifactId> 62   </dependency> 63  64   <!--实体中的Date注解,不用get set--> 65   <dependency> 66    <groupId>org.projectlombok</groupId> 67    <artifactId>lombok</artifactId> 68   </dependency> 69  70  71   <dependency> 72    <groupId>org.springframework.boot</groupId> 73    <artifactId>spring-boot-starter-test</artifactId> 74    <scope>test</scope> 75   </dependency> 76  77  78  </dependencies> 79  80  <dependencyManagement> 81   <dependencies> 82    <dependency> 83     <groupId>org.springframework.cloud</groupId> 84     <artifactId>spring-cloud-dependencies</artifactId> 85     <version>${spring-cloud.version}</version> 86     <type>pom</type> 87     <scope>import</scope> 88    </dependency> 89   </dependencies> 90  </dependencyManagement> 91  92  <build> 93   <plugins> 94    <plugin> 95     <groupId>org.springframework.boot</groupId> 96     <artifactId>spring-boot-maven-plugin</artifactId> 97    </plugin> 98   </plugins> 99  </build>100 101 </project>

   2.3:application.yml配置文件

 1 server: 2 port: 8800 3 spring: 4  application: 5  name: product-client #为你的应用起个名字,该名字将注册到eureka注册中心 6 eureka: 7  client: 8  serviceUrl: 9  defaultZone: http://localhost:8761/eureka/ #去哪里注册,eureka服务地址10 11 hystrix:12  command:13  default:14   execution:15   isolation:16    thread:17    timeoutInMilliseconds:10000 #超时时间

   2.4:实例类VO-User

 1 package com.tiandy.myclient.vo; 2  3 import lombok.Data; 4 import java.io.Serializable; 5  6 @Data 7 public class User implements Serializable { 8  9  private String id;10 11  private String name;12 13  private Integer age;14 15  @Override16  public String toString() {17   return "User{" +18     "id='" + id + '\'' +19     ", name='" + name + '\'' +20     ", age=" + age +21     '}';22  }23 }

  2.5:HelloController业务控制类

 1 package com.tiandy.myclient.controller; 2 import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; 3 import com.tiandy.myclient.vo.User; 4 import org.springframework.web.bind.annotation.PathVariable; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.RestController; 7 @RestController 8 public class HelloController { 9 10  @RequestMapping("/hello/{fallback}")11  @HystrixCommand(fallbackMethod="fallbackMethod")/*调用方式失败后调用helloFallbackMethod*/12  public String hello(@PathVariable("fallback") String fallback){13   if("1".equals(fallback)){14    throw new RuntimeException("...");15   }16   return "走网关了: hello zuul !";17  }18 19  public String fallbackMethod(String fallback){20   return "【触发了Hystrix熔断机制,调用了fallbackMethod方法...】";21  }22 23  @RequestMapping("/getUserById/{fallback}")24  public String getUserById(@PathVariable("fallback") String fallback){25   User user=new User();26   user.setId("101");27   user.setAge(32);28   user.setName("司藤");29   if(!fallback.equals("101")){30    throw new RuntimeException("...");31   }32   String userInfo=user.toString();33   System.out.println(userInfo);34   return userInfo;35  }36 }

 2.6:服务启动类MyClientApplication

 1 package com.tiandy.myclient; 2  3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 import org.springframework.cloud.netflix.eureka.EnableEurekaClient; 6 import org.springframework.cloud.netflix.hystrix.EnableHystrix; 7  8 @EnableEurekaClient 9 @EnableHystrix10 @SpringBootApplication11 public class MyClientApplication {12 13  public static void main(String[] args) {14   SpringApplication.run(MyClientApplication.class, args);15  }16 }

2.7:启动服务,看服务product-client是否注册到了注册中心

  启动成功后,访 src="https://img2020.cnblogs.com/blog/1508950/202107/1508950-20210706205538302-1134181001.png" alt="" loading="lazy">

 

三、spring cloud创建服务消费者

    3.1、创建一个my-consumert项目

   

    3.2:POM文件依赖

 1 <? 2 <project  3   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4  <modelVersion>4.0.0</modelVersion> 5  6  <groupId>com.tiandy</groupId> 7  <artifactId>my-consumer</artifactId> 8  <version>0.0.1-SNAPSHOT</version> 9  <packaging>jar</packaging> 10  11  <name>my-consumer</name> 12  <description>Demo project for Spring Boot</description> 13  14  <parent> 15   <groupId>org.springframework.boot</groupId> 16   <artifactId>spring-boot-starter-parent</artifactId> 17   <version>1.5.9.RELEASE</version> 18   <relativePath/> <!-- lookup parent from repository --> 19  </parent> 20  21  <properties> 22   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 23   <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 24   <java.version>1.8</java.version> 25   <spring-cloud.version>Edgware.RELEASE</spring-cloud.version> 26  </properties> 27  28  <dependencies> 29  30   <dependency> 31    <groupId>org.springframework.boot</groupId> 32    <artifactId>spring-boot-starter-web</artifactId> 33   </dependency> 34   <dependency> 35    <groupId>org.springframework.cloud</groupId> 36    <artifactId>spring-cloud-starter-eureka</artifactId> 37   </dependency> 38   <!-- @HystrixCommand注解 --> 39   <dependency> 40    <groupId>com.netflix.hystrix</groupId> 41    <artifactId>hystrix-javanica</artifactId> 42   </dependency> 43   <dependency> 44    <groupId>org.springframework.cloud</groupId> 45    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> 46   </dependency> 47   <!-- 声明调用 --> 48   <dependency> 49    <groupId>org.springframework.cloud</groupId> 50    <artifactId>spring-cloud-starter-openfeign</artifactId> 51   </dependency> 52   <!-- 服务容错 --> 53   <dependency> 54    <groupId>org.springframework.cloud</groupId> 55    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> 56   </dependency> 57  58   <!--网关zuul--> 59   <dependency> 60    <groupId>org.springframework.cloud</groupId> 61    <artifactId>spring-cloud-starter-netflix-zuul</artifactId> 62   </dependency> 63  64   <!--实体中的Date注解,不用get set--> 65   &l......

原文转载:http://www.shaoqun.com/a/851335.html

跨境电商:https://www.ikjzd.com/

亿恩:https://www.ikjzd.com/w/1461

巴克莱:https://www.ikjzd.com/w/2775

Sunrate:https://www.ikjzd.com/w/2685


一、搭建注册中心1.1、创建一个cloud-service项目1.2:POM文件依赖1<?2<project3xsi:schemaLocation="http://maven.apache.org/POM/4.0.0https://maven.apache.org/xsd/maven-4.0.0.xsd">4<modelVersion>4.0.0&
你以为出价1.23刀的恶意跟卖只是抢钱这么简单?:https://www.ikjzd.com/articles/100756
产品老是被海关扣?危险品是如何鉴定的?:https://www.ikjzd.com/articles/100757
外贸课堂:如何挽回一个快要"变心"的买家?:https://www.ikjzd.com/articles/100758
路透社:美国将豁免110种中国产品高额关税:https://www.ikjzd.com/articles/100761
口述男朋友在车里㖭我下面 他的舌头弄得我欲仙欲死:http://lady.shaoqun.com/a/247531.html
老师在我胯下呻呤 老师的屁股又白又大:http://lady.shaoqun.com/a/247323.html
小宝贝把腿张开让我㖭 张开双腿迎合着两个男人:http://lady.shaoqun.com/m/a/248304.html
妇女上厕所正面尿尿 学校女厕所真实图片:http://www.30bags.com/m/a/249670.html
怀孕后可以合住一个房间吗?对胎儿有没有伤害?关于合住一个房间应该注意的问题都在这里:http://lady.shaoqun.com/a/405821.html
女性性幻想很丰富。你吃过这十种中的几种:http://lady.shaoqun.com/a/405823.html
沉迷手淫的女孩:我的身体是我自己的:http://lady.shaoqun.com/a/405824.html
东南亚疫情加剧,Lazada&Shopee运动户外品类线上需求暴涨:https://www.ikjzd.com/articles/146421

No comments:

Post a Comment