美文网首页
Eureka初体验

Eureka初体验

作者: 一个大西瓜CPI | 来源:发表于2019-04-04 14:56 被阅读0次

    使用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依赖
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
                <version>2.0.1.RELEASE</version>
            </dependency>
    
    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初体验

          本文链接:https://www.haomeiwen.com/subject/znhabqtx.html