1.1.

Eureka学习

Eureka学习

事例学习地方:https://github.com/MyCreazy/EurekaStudy

事例学习地方:https://github.com/MyCreazy/EurekaStudy

此间有参考http://blog.csdn.net/nero\_\_a/article/details/65631367进行总结操作

此处来参照http://blog.csdn.net/nero\_\_a/article/details/65631367进行总结操作

Spring Cloud下出广大工:

Spring Cloud下发生无数工程:

  • Spring Cloud
    Config:依靠git仓库实现的中心化配置管理。配置资源得以射到Spring的两样开发环境面临,但是也可行使以非Spring应用被。
  • Spring Cloud Netflix:不同之Netflix
    OSS组件的聚众:Eureka、Hystrix、Zuul、Archaius等。
  • Spring Cloud
    Bus:事件总线,利用分布式消息将大半个劳务连接起来。非常适合在联谊众多被传状态的反事件(例如:配置变更事件)
  • Spring Cloud
    Consul:服务意识与配置管理,由Hashicorp团队出。我操先打Spring
    Cloud Netflix看打,它提供了如下的职能特色:
  • 劳动意识:Eureka-server实例作为劳动提供者,可以注册到劳动登记中心,Eureka客户端可通过Spring管理之bean发现实例;
  • 劳意识:嵌套式的Eureka服务得透过声明式的Java配置文件创建;
  • 断路器:利用注解,可以创建一个简便的Hystrix客户端;
  • 断路器:通过Java配置文件可以创建内嵌的Hystrix控制面板;
  • 声明式REST客户端:使用Feign可以创建声明式、模板化的HTTP客户端;
  • 客户端负载均衡器:Ribbon
  • 路由器和过滤器:Zuul可以在微服务架构中提供路由于功能、身份验证、服务迁移、金丝雀发布等于功用。
  • Spring Cloud
    Config:依靠git仓库实现的中心化配置管理。配置资源得以投到Spring的不等开发环境遭受,但是呢可以用于非Spring应用中。
  • Spring Cloud Netflix:不同的Netflix
    OSS组件的联谊:Eureka、Hystrix、Zuul、Archaius等。
  • Spring Cloud
    Bus:事件总线,利用分布式消息将多单服务连接起来。非常适合在集众多中传来状态的更动事件(例如:配置变更事件)
  • Spring Cloud
    Consul:服务意识和安排管理,由Hashicorp团队开发。我主宰先从Spring
    Cloud Netflix看于,它提供了之类的效力特色:
  • 劳意识:Eureka-server实例作为服务提供者,可以挂号及服务注册中心,Eureka客户端好经Spring管理之bean发现实例;
  • 服务意识:嵌套式的Eureka服务可通过声明式的Java配置文件创建;
  • 断路器:利用注解,可以创造一个粗略的Hystrix客户端;
  • 断路器:通过Java配置文件可以创造内嵌的Hystrix控制面板;
  • 声明式REST客户端:使用Feign可以创造声明式、模板化的HTTP客户端;
  • 客户端负载均衡器:Ribbon
  • 路由器和过滤器:Zuul可以在微服务架构中提供路由于功能、身份验证、服务迁移、金丝雀发布等于功能。

1. 劳务登记中心

1. 劳动登记中心

每当IDEA中开创一个Spring Cloud工程,引入Eureka-Server包,pom文件整体如下:

当IDEA中开创一个Spring Cloud工程,引入Eureka-Server包,pom文件整体如下:

 

 

<project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

<project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

  xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd”
>

  xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd”
>

  <modelVersion>4.0.0</modelVersion>

  <modelVersion>4.0.0</modelVersion>

 

 

  <groupId>com.sl</groupId>

  <groupId>com.sl</groupId>

  <artifactId>RegistryCenter</artifactId>

  <artifactId>RegistryCenter</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>jar</packaging>

  <packaging>jar</packaging>

 

 

  <name>RegistryCenter</name>

  <name>RegistryCenter</name>

  <url>http://maven.apache.org&lt;/url&gt;

  <url>http://maven.apache.org&lt;/url&gt;

 

 

  <properties>

  <properties>

   
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

   
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  </properties>

  </properties>

 

 

 <parent>

 <parent>

    <groupId>org.springframework.boot</groupId>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <artifactId>spring-boot-starter-parent</artifactId>

    <version>1.3.5.RELEASE</version>

    <version>1.3.5.RELEASE</version>

    <relativePath/>

    <relativePath/>

</parent>

</parent>

<dependencies>

<dependencies>

<!– 用于注册中心访问账号认证 –>

<!– 用于注册中心访问账号认证 –>

<dependency>

<dependency>

    <groupId>org.springframework.boot</groupId>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-security</artifactId>

    <artifactId>spring-boot-starter-security</artifactId>

</dependency>

</dependency>

    <dependency>

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-test</artifactId>

   <artifactId>spring-boot-starter-test</artifactId>

   <scope>test</scope>

   <scope>test</scope>

    </dependency>

    </dependency>

    <!– 注册中心所欲的包 –>

    <!– 注册中心所用的包 –>

    <dependency>

    <dependency>

        <groupId>org.springframework.cloud</groupId>

        <groupId>org.springframework.cloud</groupId>

   <artifactId>spring-cloud-starter-eureka-server</artifactId>

   <artifactId>spring-cloud-starter-eureka-server</artifactId>

    </dependency>

    </dependency>

</dependencies>

</dependencies>

<dependencyManagement>

<dependencyManagement>

    <dependencies>

    <dependencies>

        <dependency>

        <dependency>

       <groupId>org.springframework.cloud</groupId>

       <groupId>org.springframework.cloud</groupId>

       <artifactId>spring-cloud-dependencies</artifactId>

       <artifactId>spring-cloud-dependencies</artifactId>

       <version>Brixton.RELEASE</version>

       <version>Brixton.RELEASE</version>

       <type>pom</type>

       <type>pom</type>

       <scope>import</scope>

       <scope>import</scope>

   </dependency>

   </dependency>

    </dependencies>

    </dependencies>

</dependencyManagement>

</dependencyManagement>

<!– spring boot的maven打包插件 –>

<!– spring boot的maven打包插件 –>

    <build>

    <build>

    <defaultGoal>compile</defaultGoal>

    <defaultGoal>compile</defaultGoal>

        <plugins>

        <plugins>

            <plugin>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

            </plugin>

        </plugins>

        </plugins>

    </build>

    </build>

</project>

</project>

 

 

开创APP类,并因此@EnableEurekaServer和@SpringBootApplication两独注解修饰,后者是Spring
Boot应用都亟待因此的,这里不作了多讲;@EnableEurekaServer注解的图是触发Spring
Boot的全自动配置体制,由于我们之前以pom文件中导入了eureka-server,spring
boot会在容器被开创对应之bean。Eureka的代码如下:

创造APP类,并据此@EnableEurekaServer和@SpringBootApplication两只注解修饰,后者是Spring
Boot应用还要为此底,这里不发过多说;@EnableEurekaServer注解的打算是触发Spring
Boot的机动配置机制,由于我们前在pom文件被导入了eureka-server,spring
boot会在容器中创造对应的bean。Eureka的代码如下:

package com.sl.RegistryCenter;

package com.sl.RegistryCenter;

 

 

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.builder.SpringApplicationBuilder;

import
org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

import
org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

 

 

/**

/**

 * Hello world!

 * Hello world!

 *

 *

 */

 */

@EnableEurekaServer

@EnableEurekaServer

@SpringBootApplication

@SpringBootApplication

public class App {

public class App {

        public static void main(String[] args) {

        public static void main(String[] args) {

               new
SpringApplicationBuilder(App.class).web(true).run(args);

               new
SpringApplicationBuilder(App.class).web(true).run(args);

        }

        }

}

}

增长部署文件application.properties,并且增长如下参数,才会创一个确实好以的劳务登记中心。

累加布文件application.properties,并且增长如下参数,才能够创建一个确得以应用的服务登记中心。

######eureka服务端######

######eureka服务端######

spring.application.name=eureka-server

spring.application.name=eureka-server

 #赶走下线的劳动,间隔,5秒,默认是60,建议开发以及测试环境配置

 #逐下线的劳动,间隔,5秒,默认是60,建议开发与测试环境配置

 eureka.server.evictionIntervalTimerInMs=10000

 eureka.server.evictionIntervalTimerInMs=10000

server.port=8761

server.port=8761

#是否需要登记及注册中心,因为该档本身作为劳务注册中心,所以为false

#是不是需要注册及注册中心,因为拖欠品种自身作为劳务登记中心,所以为false

 eureka.client.register-with-eureka=false

 eureka.client.register-with-eureka=false

 #是否要由注册中心得到服务列表,原因与齐,为false

 #是不是需要由注册中心得到服务列表,原因和齐,为false

 eureka.client.fetch-registry=false

 eureka.client.fetch-registry=false

 security.basic.enabled=true

 security.basic.enabled=true

security.user.name=admin

security.user.name=admin

security.user.password=123

security.user.password=123

#注册服务器的地址:服务提供者和服务消费者都使因之地方

#登记服务器的地址:服务提供者和服务消费者还设凭是地方

 eureka.client.serviceUrl.defaultZone=http://admin:123@localhost:8761/eureka

 eureka.client.serviceUrl.defaultZone=http://admin:123@localhost:8761/eureka

 ###Eureka自我保护体制,为true表示开头,false表示关,默认为始发####

 ###Eureka自我保护体制,为true表示开头,false表示关,默认为发端####

 eureka.server.enable-self-preservation=true

 eureka.server.enable-self-preservation=true

 

 

启航注册服务,并走访:http://localhost:8761,就可以看到如下界面。

开行注册服务,并访问:http://localhost:8761,就可以看到如下界面。

 

 

 

 

2. 劳务提供者

2. 劳务提供者

        创建一个Spring
Boot工程,代表劳务提供者,该服务提供者会暴露一个脚下求产生的时光字符串。

        创建一个Spring
Boot工程,代表服务提供者,该服务提供者会暴露一个脚下呼吁产生的时字符串。

 

 

工的pom文件内容如下:

工的pom文件内容如下:

 

 

<project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

<project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

   xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd”
>

   xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd”
>

   <modelVersion>4.0.0</modelVersion>

   <modelVersion>4.0.0</modelVersion>

 

 

   <groupId>com.sl</groupId>

   <groupId>com.sl</groupId>

   <artifactId>TestMicroService</artifactId>

   <artifactId>TestMicroService</artifactId>

   <version>0.0.1-SNAPSHOT</version>

   <version>0.0.1-SNAPSHOT</version>

   <packaging>jar</packaging>

   <packaging>jar</packaging>

 

 

   <name>TestMicroService</name>

   <name>TestMicroService</name>

   <url>http://maven.apache.org&lt;/url&gt;

   <url>http://maven.apache.org&lt;/url&gt;

 

 

   <properties>

   <properties>

     
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

     
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

   </properties>

   </properties>

 

 

   <parent>

   <parent>

      <groupId>org.springframework.boot</groupId>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <version>1.3.5.RELEASE</version>

      <version>1.3.5.RELEASE</version>

      <relativePath /> <!– lookup parent from repository
–>

      <relativePath /> <!– lookup parent from repository
–>

   </parent>

   </parent>

   <dependencies>

   <dependencies>

      <dependency>

      <dependency>

         <groupId>org.springframework.boot</groupId>

         <groupId>org.springframework.boot</groupId>

         <artifactId>spring-boot-starter-test</artifactId>

         <artifactId>spring-boot-starter-test</artifactId>

         <scope>test</scope>

         <scope>test</scope>

      </dependency>

      </dependency>

      <dependency>

      <dependency>

         <groupId>org.springframework.cloud</groupId>

         <groupId>org.springframework.cloud</groupId>

         <artifactId>spring-cloud-starter-eureka</artifactId>

         <artifactId>spring-cloud-starter-eureka</artifactId>

      </dependency>

      </dependency>

 

 

      <!– 用于注册中心访问账号认证 –>

      <!– 用于注册中心访问账号认证 –>

      <dependency>

      <dependency>

         <groupId>org.springframework.boot</groupId>

         <groupId>org.springframework.boot</groupId>

        
<artifactId>spring-boot-starter-actuator</artifactId>

        
<artifactId>spring-boot-starter-actuator</artifactId>

      </dependency>

      </dependency>

   </dependencies>

   </dependencies>

   <dependencyManagement>

   <dependencyManagement>

      <dependencies>

      <dependencies>

         <dependency>

         <dependency>

            <groupId>org.springframework.cloud</groupId>

            <groupId>org.springframework.cloud</groupId>

           
<artifactId>spring-cloud-dependencies</artifactId>

           
<artifactId>spring-cloud-dependencies</artifactId>

            <version>Brixton.RELEASE</version>

            <version>Brixton.RELEASE</version>

            <type>pom</type>

            <type>pom</type>

            <scope>import</scope>

            <scope>import</scope>

         </dependency>

         </dependency>

      </dependencies>

      </dependencies>

   </dependencyManagement>

   </dependencyManagement>

    <build>

    <build>

    <defaultGoal>compile</defaultGoal>

    <defaultGoal>compile</defaultGoal>

        <plugins>

        <plugins>

            <plugin>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

            </plugin>

        </plugins>

        </plugins>

    </build>

    </build>

</project>

</project>

里面的关键在于spring-cloud-starter-eureka这个Jar包,其中蕴涵了eureka的客户端实现。

内的关键在于spring-cloud-starter-eureka这个Jar包,其中蕴含了eureka的客户端实现。

当src/main/java/com.sl.TestMicroService下创建工程的主类App,使用@EnableDiscoveryClient注解修饰,该注解在劳务启动之时光,可以接触发服务登记之经过,向配置文件被指定的服务注册中心(Eureka-Server)的地方注册自己提供的劳动。App的源码如下:

每当src/main/java/com.sl.TestMicroService下创建工程的主类App,使用@EnableDiscoveryClient注解修饰,该注解在劳务启动之上,可以触发服务登记的历程,向配置文件中指定的劳务注册中心(Eureka-Server)的地点注册自己提供的服务。App的源码如下:

 

 

package com.sl.TestMicroService;

package com.sl.TestMicroService;

 

 

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.builder.SpringApplicationBuilder;

import
org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import
org.springframework.cloud.client.discovery.EnableDiscoveryClient;

 

 

/**

/**

 * Hello world!

 * Hello world!

 *

 *

 */

 */

@EnableDiscoveryClient

@EnableDiscoveryClient

@SpringBootApplication

@SpringBootApplication

public class App {

public class App {

 

 

   public static void main(String[] args) {

   public static void main(String[] args) {

      new
SpringApplicationBuilder(App.class).web(true).run(args);

      new
SpringApplicationBuilder(App.class).web(true).run(args);

   }

   }

}

}

application.properties配置文件的情节如下:

application.properties配置文件的情如下:

server.port=8111

server.port=8111

#装以之号

#装以的名称

spring.application.name=microservice-provider-user

spring.application.name=microservice-provider-user

#劳动登记之Eureka Server地址

#劳注册之Eureka Server地址

eureka.client.serviceUrl.defaultZone=http://admin:123@localhost:8761/eureka

eureka.client.serviceUrl.defaultZone=http://admin:123@localhost:8761/eureka

#安注册ip

#安注册ip

eureka.instance.prefer-ip-address=true

eureka.instance.prefer-ip-address=true

#打定义应用实例id

#起定义应用实例id

#健康检查

#健康检查

eureka.client.healthcheck.enabled=true

eureka.client.healthcheck.enabled=true

服务提供者的基本框架搭好后,需要贯彻劳务的具体内容,在ComputeController类中落实,它的实际代码如下:

劳务提供者的主干框架搭好后,需要实现服务的具体内容,在ComputeController类中贯彻,它的具体代码如下:

package com.sl.TestMicroService;

package com.sl.TestMicroService;

 

 

import java.text.SimpleDateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Date;

 

 

import org.apache.log4j.Logger;

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.cloud.client.ServiceInstance;

import org.springframework.cloud.client.ServiceInstance;

import org.springframework.cloud.client.discovery.DiscoveryClient;

import org.springframework.cloud.client.discovery.DiscoveryClient;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.bind.annotation.RestController;

 

 

@RestController

@RestController

public class ComputeController {

public class ComputeController {

        private final Logger logger = Logger.getLogger(getClass());

        private final Logger logger = Logger.getLogger(getClass());

        @Autowired

        @Autowired

        private DiscoveryClient client;

        private DiscoveryClient client;

 

 

        private SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd
HH:mm:ss”);

        private SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd
HH:mm:ss”);

 

 

        @RequestMapping(value = “/test”, method = RequestMethod.GET)

        @RequestMapping(value = “/test”, method = RequestMethod.GET)

        public String test() {

        public String test() {

               ServiceInstance instance =
client.getLocalServiceInstance();

               ServiceInstance instance =
client.getLocalServiceInstance();

               String temp = “当前工夫【” + df.format(new Date()) +
“】/add, host:” + instance.getHost() + “, service_id:”

               String temp = “当前岁月【” + df.format(new Date()) +
“】/add, host:” + instance.getHost() + “, service_id:”

                               + instance.getServiceId();

                               + instance.getServiceId();

               logger.info(temp);

               logger.info(temp);

               return temp;

               return temp;

        }

        }

}

}

优先启动服务登记中心的工程,然后又起步服务提供者,在造访:localhost:8761,如下图所出示,服务提供者已经注册到劳动登记中心啦,下图可以查看

先启动服务登记中心的工程,然后再度起步服务提供者,在造访:localhost:8761,如下图所出示,服务提供者已经报及服务登记中心啦,下图可以查阅

 

 

每当Spring Cloud
Netflix中,使用Ribbon实现客户端负载均衡,使用Feign实现声明式HTTP客户端调用——即写得像当地函数调用一样。

以Spring Cloud
Netflix中,使用Ribbon实现客户端负载均衡,使用Feign实现声明式HTTP客户端调用——即写得像当地函数调用一样。

3. 服务消费者-Feign

3. 劳务消费者-Feign

pom配置如下:

pom配置如下:

<project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

<project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

  xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd”
>

  xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd”
>

  <modelVersion>4.0.0</modelVersion>

  <modelVersion>4.0.0</modelVersion>

 

 

  <groupId>com.sl</groupId>

  <groupId>com.sl</groupId>

  <artifactId>ServiceConsumer</artifactId>

  <artifactId>ServiceConsumer</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>jar</packaging>

  <packaging>jar</packaging>

 

 

  <name>ServiceConsumer</name>

  <name>ServiceConsumer</name>

  <url>http://maven.apache.org&lt;/url&gt;

  <url>http://maven.apache.org&lt;/url&gt;

<parent>

<parent>

      <groupId>org.springframework.boot</groupId>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <version>1.3.5.RELEASE</version>

      <version>1.3.5.RELEASE</version>

      <relativePath /> <!– lookup parent from repository
–>

      <relativePath /> <!– lookup parent from repository
–>

   </parent>

   </parent>

  <properties>

  <properties>

   
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

   
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

  </properties>

  </properties>

 

 

  <build>

  <build>

    <defaultGoal>compile</defaultGoal>

    <defaultGoal>compile</defaultGoal>

        <plugins>

        <plugins>

            <plugin>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

            </plugin>

        </plugins>

        </plugins>

    </build>

    </build>

 

 

   <dependencies>

   <dependencies>

        <!– Feign实现声明式HTTP客户端 –>

        <!– Feign实现声明式HTTP客户端 –>

        <dependency>

        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <groupId>org.springframework.cloud</groupId>

           
<artifactId>spring-cloud-starter-feign</artifactId>

           
<artifactId>spring-cloud-starter-feign</artifactId>

        </dependency>

        </dependency>

 

 

        <!– eureka客户端 –>

        <!– eureka客户端 –>

        <dependency>

        <dependency>

            <groupId>org.springframework.cloud</groupId>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-eureka</artifactId>

            <artifactId>spring-cloud-starter-eureka</artifactId>

        </dependency>

        </dependency>

 

 

        <!– spring boot实现Java Web服务–>

        <!– spring boot实现Java Web服务–>

        <dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

        </dependency>

 

 

        <dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <groupId>org.springframework.boot</groupId>

           
<artifactId>spring-boot-starter-test</artifactId>

           
<artifactId>spring-boot-starter-test</artifactId>

            <scope>test</scope>

            <scope>test</scope>

        </dependency>

        </dependency>

    </dependencies>

    </dependencies>

   

   

    <dependencyManagement>

    <dependencyManagement>

      <dependencies>

      <dependencies>

         <dependency>

         <dependency>

            <groupId>org.springframework.cloud</groupId>

            <groupId>org.springframework.cloud</groupId>

           
<artifactId>spring-cloud-dependencies</artifactId>

           
<artifactId>spring-cloud-dependencies</artifactId>

            <version>Brixton.RELEASE</version>

            <version>Brixton.RELEASE</version>

            <type>pom</type>

            <type>pom</type>

            <scope>import</scope>

            <scope>import</scope>

         </dependency>

         </dependency>

      </dependencies>

      </dependencies>

   </dependencyManagement>

   </dependencyManagement>

</project>

</project>

 

 

先是创建应用程序启动类:ConsumerApp,代码如下:

率先创建应用程序启动类:ConsumerApp,代码如下:

package com.sl.ServiceConsumer;

package com.sl.ServiceConsumer;

 

 

import org.springframework.boot.SpringApplication;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import org.springframework.cloud.netflix.feign.EnableFeignClients;

import org.springframework.cloud.netflix.feign.EnableFeignClients;

 

 

/**

/**

 * Hello world!

 * Hello world!

 *

 *

 */

 */

@EnableDiscoveryClient // 用于启动服务意识效果

@EnableDiscoveryClient // 用于启动服务意识意义

@EnableFeignClients // 用于启动Fegin功能

@EnableFeignClients // 用于启动Fegin功能

@SpringBootApplication

@SpringBootApplication

public class ConsumerApp {

public class ConsumerApp {

 

 

        /**

        /**

         * main函数入口

         * main函数入口

         *

         *

         * @param args

         * @param args

         */

         */

        public static void main(String[] args) {

        public static void main(String[] args) {

               SpringApplication.run(ConsumerApp.class);

               SpringApplication.run(ConsumerApp.class);

        }

        }

}

}

下一场创建ComputeClient接口,使用@FeignClient(“microservice-provider-user”)注解修饰,microservice-provider-user就是服务提供者的号,然后定义要运用的劳动,代码如下:

然后创建ComputeClient接口,使用@FeignClient(“microservice-provider-user”)注解修饰,microservice-provider-user就是服务提供者的称呼,然后定义要使的劳务,代码如下:

package com.sl.ServiceConsumer;

package com.sl.ServiceConsumer;

 

 

import org.springframework.cloud.netflix.feign.FeignClient;

import org.springframework.cloud.netflix.feign.FeignClient;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestMethod;

 

 

@FeignClient(“microservice-provider-user”)

@FeignClient(“microservice-provider-user”)

public interface ConsumerClient {

public interface ConsumerClient {

        // @RequestMapping(method = RequestMethod.GET, value = “/add”)

        // @RequestMapping(method = RequestMethod.GET, value = “/add”)

        // Integer add(@RequestParam(value = “a”) Integer a,
@RequestParam(value =

        // Integer add(@RequestParam(value = “a”) Integer a,
@RequestParam(value =

        // “b”) Integer b);

        // “b”) Integer b);

 

 

        @RequestMapping(method = RequestMethod.GET, value = “/test”)

        @RequestMapping(method = RequestMethod.GET, value = “/test”)

        String test();

        String test();

}

}

于ConsumerController中,像引入普通的spring
bean一样引入ComputeClient对象,其他的和Ribbon的切近。

每当ConsumerController中,像引入普通的spring
bean一样引入ComputeClient对象,其他的跟Ribbon的类。

 

 

package com.sl.ServiceConsumer;

package com.sl.ServiceConsumer;

 

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.bind.annotation.RestController;

 

 

@RestController

@RestController

public class ConsumerController {

public class ConsumerController {

        @Autowired

        @Autowired

        private ConsumerClient computeClient;

        private ConsumerClient computeClient;

 

 

        @RequestMapping(value = “/test”, method = RequestMethod.GET)

        @RequestMapping(value = “/test”, method = RequestMethod.GET)

        public String test() {

        public String test() {

               return computeClient.test();

               return computeClient.test();

        }

        }

}

}

application.properties的内容如下:

application.properties的情节如下:

#动用名称

#动用名称

spring.application.name=fegin-consumer

spring.application.name=fegin-consumer

#端口号

#端口号

server.port=9000

server.port=9000

 

 

#挂号中心的地址

#登记中心的地方

eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

 

 

起先fegin消费者,访问localhost:9000/add,也堪看看服务提供者已经收取了消费者发来的伸手。

起步fegin消费者,访问localhost:9000/add,也足以望服务提供者已经吸收了消费者发来的请求。

可以看出零星只劳务轮流为调用

得看到零星个劳务轮流为调用

 注意事项

 注意事项

1.关于本对应问题

1.有关本对应问题

  • Angel版本对应Spring Boot 1.2.x
  • Brixton版本对应Spring Boot 1.3.x
  • Camden版本对应Spring Boot 1.4.x
  • Angel版本对应Spring Boot 1.2.x
  • Brixton版本对应Spring Boot 1.3.x
  • Camden版本对应Spring Boot 1.4.x

2.直接打包

2.直接打包

卷入时记得引用下面的保险

装进时记得引用下面的保证

  <build>

  <build>

    <defaultGoal>compile</defaultGoal>

    <defaultGoal>compile</defaultGoal>

        <plugins>

        <plugins>

            <plugin>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

            </plugin>

        </plugins>

        </plugins>

    </build>

    </build>

 

 

相关文章