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依赖
        <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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • (一)Spring Cloud 简介 Spring Cloud是一系列框架的有序集合。它利用Spring Boot...
    shmilyahu阅读 2,795评论 0 0
  • 1 为什么需要服务发现 简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基...
    谦小易阅读 25,246评论 4 93
  • 六点起床七点到老图练听力,元气满满的一天! 早晨吃了个双黄蛋真是幸运啊~ 人来人往,边走边爱。不准情绪化,不准回头...
    Subyfu阅读 1,297评论 0 0
  • 这个世界至少有两个东西你不能嘲笑, 一个是出身,一个是梦想。 什么样的出身不重要, 重要的是将来成为什么样的人; ...
    原圆阅读 1,229评论 0 0
  • 昨天和张妍探讨共修的事情,谈到我自己的状态,我说我一直游走在成长的边缘。一下子很投入,很有激情和干劲,一下子又很懈...
    凤九觉察阅读 4,149评论 0 5

友情链接更多精彩内容