Eureka初体验

使用Idea创建一个Eurke项目,包括一个Eureka服务端和两个客户端

一、创建Eureka服务

  1. 使用idea创建一个新项目,这里面可以选择自己的jdk版本
    • eureka1.PNG
  1. 选择cloud Discovery--->Eureka Server创建项目
    • eureka2.PNG
  1. Application上面申明这是一个Eureka服务
@EnableEurekaServer
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}
  1. 设置Erueka服务的配置文件,这儿我使用的是yml文件
# 服务注册中心 (单节点)
server:
  port: 9874

eureka:
  instance:
    hostname: localhost
  client:
    fetch-registry: false # 表示是否从Eureka Server获取注册信息,默认为true.因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,这里设置为false
    register-with-eureka: false # 表示是否将自己注册到Eureka Server,默认为true.由于当前应用就是Eureka Server,故而设置为false.
    service-url:
      # 设置与Eureka Server的地址,查询服务和注册服务都需要依赖这个地址.默认是http://localhost:9874/eureka/;多个地址可使用','风格.
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  1. 这时候就可以启动项目,访问localhost:9874地址,确定是否配置成功,如图,表示设置成功
    • eureka3.PNG

二、配置客户端

  1. 同上1、2的步骤创建eureka的客户端项目
  2. Application中声明这是一个Eureka客户端(@EnableDiscoveryClient注解能激活Eureka中的DiscoveryClient实现)
@EnableDiscoveryClient
@SpringBootApplication
@RestController
public class SpringCloudEurekaClientApplication {

    @GetMapping("/client1")
    public String print() {
        return "这是   client1";
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaClientApplication.class, args);
    }

}

  1. 配置客户端的服务中心

server:
  port: 9875

spring:
  application:
    name: service

eureka:
  client:
    service-url:
      defaultZone: http://localhost:9874/eureka # 指定服务注册中心
  1. 校验客户端是否配置成功,如图,表示配置成功
    • eureka.PNG

此时也可以通过客户端自己的服务访问接口

三、通过Feign进行远程进程调用

  1. 同上创建client2项目,配置文件如下
server:
  port: 9876

spring:
  application:
    name: service2

eureka:
  client:
    service-url:
      defaultZone: http://localhost:9874/eureka # 指定服务注册中心
  1. client2中声明两个接口,用来提供远程调用
@EnableDiscoveryClient
@SpringBootApplication
@RestController
public class SpringCloudEurekaClient2Application {

    @GetMapping("/client2")
    public String print() {
        return "这是   client2222";
    }

    @GetMapping("/client2-params")
    public String printParams(String s) {
        return "这是   client2222   " + s ;
    }


    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaClient2Application.class, args);
    }

}

  1. client1加入feign依赖
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
            2.0.1.RELEASE
        
  1. client1启动feign配置
@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients//启动Feign客户端注解
public class SpringCloudEurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaClientApplication.class, args);
    }

}
  1. client1声明要调用的远程接口
@FeignClient("service2")
public interface TestClient1 {

    //无参数调用
    @GetMapping(value = "/client2")
    public String print111();

    //有参数调用
    @GetMapping(value = "/client2-params" )
    public String printParams(@RequestParam(value = "s")String s);
}

注意:
a. 这里面的@FeignClient("service2")表示需要调用的远程服务的名字,service2就是在client2的yml文件中声明的spring.application.name
b. 有参数的的接口声明一定要加上 @RequestParam(value = "s")注解

  1. client1中声明接口进行远程调用
@EnableDiscoveryClient
@SpringBootApplication
@RestController
@EnableFeignClients//启动Feign客户端注解
public class SpringCloudEurekaClientApplication {

    @GetMapping("/client1")
    public String print() {
        return "这是   client1";
    }

    @Resource
    TestClient1 testClient1;


    @GetMapping("/client1-call-client2")
    public String printClient2String() {
        return testClient1.print111();
    }

    @GetMapping("/client1-call-client2-params")
    public String printClient2String(String s) {
        return testClient1.printParams(s);
    }


    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaClientApplication.class, args);
    }

}
  1. 测试接口
    • eureka4.PNG

你可能感兴趣的:(Eureka初体验)