spring cloud Eureka搭建

最最最基础的服务搭建,实现目的是可以注册,可以消费;没有原理,没有知识拓展。项目名称写错了,应该是Eureka,
首先先创建一个maven项目,项目是多模块结构。
在这里插入图片描述
在erukademo的pom里引入依赖

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
    </parent>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR8</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

正常用idea创建的model会在erukademo的pom里自动加上modules,如下,
在这里插入图片描述

<modules>
        <module>server</module>
        <module>consumer</module>
        <module>producer</module>
        <module>producer1</module>
    </modules>

没有则自己添加一下,每个子模块的pom里会自动引入父模块(erukademo)
在这里插入图片描述
没有的话自己加一下。项目结构构件完毕后,先创建一个eureka注册服务。

创建eureka注册服务。server

1.添加依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-netflix-eureka-server</artifactId>
        </dependency>

    </dependencies>

再写个启动类

@SpringBootApplication
@EnableEurekaServer
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class);
        System.out.println("启动成功");
    }
}

再加一个application.yaml配置文件

server:
  port: 9020
eureka:
  client:
    fetchRegistry: false  ## 要不要去注册中心获取其他服务的地址
    registerWithEureka: false ## 表示自己就是注册中心,不用注册自己
    serviceUrl:
      defaultZone: http://localhost:9020
spring:
  application:
    name: eruka-demo-server1

直接启动服务就可以了,如果启动不了,先clean,再packge一下,点下面这里。
在这里插入图片描述
注意后面带root的那一个,如果启动不了就重复这个操作,启动报错另说。
启动之后,在浏览器器访问 http:localhost:9020/就可以打开eureka控制台了。
在这里插入图片描述
还没有注册的服务。下面开始编写生产者,注册到eureka。

编写eureka生产者 producer

添加依赖

   <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

写一个启动类

@SpringBootApplication
@EnableDiscoveryClient
public class ProducerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.class);
        System.out.println("启动成功");
    }
}

再写一个要注册的方法

@RestController
public class Producer1 {
    @GetMapping("/get")
    public String get(){
        return "producer1";
    }
}

添加一个application.yaml配置,如下

server:
  port: 9021
spring:
  application:
    name: eruka-producer1
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:9020/eureka/

注意serviceUrl.defaultZone,这是个大坑,调试了好半天,按这个写就可以正常注册。
接下来就是启动生产者服务。启动之后,就会在注册中心看到一个 eruka-producer1的服务。
在这里插入图片描述
再复制一份producer模块 名称改为producer1,get方法返回改为“producer2”,这个就是为了区别服务调用的,还有就是改下port:9022,name和第一个生产者producer一致,启动后可以在注册中心看到一个服务有两个实例。
在这里插入图片描述

编写消费者consumer

添加依赖

  <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

编写启动类

@EnableEurekaClient
@SpringBootApplication
public class ConsumerApp {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp.class);
        System.out.println("启动成功!");
    }
    //还有其他方式调用服务  这里只是为了搭建eureka,所以不关心
    @Bean
    @LoadBalanced
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

编写一个controller 消费生产者

@RestController
public class Consumer {
    @Autowired
    RestTemplate restTemplate;
    @GetMapping("/get")
    public String get(){
       return restTemplate.getForObject("http://ERUKA-PRODUCER1/get",String.class);
    }
}

ERUKA-PRODUCER1这个是复制eureka控制台的,
添加application.yaml配置文件

server:
  port: 9030
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:9020/eureka/
spring:
  application:
    name: consumer

启动consumer服务。在控制台可以看到 注册了一个服务,
在这里插入图片描述
在浏览器里调用接口 http:localhost:9030/get
在这里插入图片描述
到这里 一个服务的注册中心、生产者、消费者 已经搭建完毕,如果你起了两个生产者,那么重复调用接口会看到 输出在producer1、producer2间来回切换。
在这里插入图片描述

使用Feign消费

创建feign -demo
1、引入jar包

<!-- eureka连接-->
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!-- feign依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-openfeign-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

2、创建启动类

@SpringBootApplication
@EnableFeignClients //声明可以feign连接
public class FeignApp {
    public static void main(String[] args) {
        SpringApplication.run(FeignApp.class);
        System.out.println("启动成功!");
    }
}

3、创建feign 接口

@FeignClient("eruka-producer1") //eruka-producer1 生产者服务名
public interface FeignCliet {
    //需要通过feign调用的 rest接口  参数、返回值与rest接口一致
    @RequestMapping(value = "/get",method = RequestMethod.GET,consumes = "application/json")
    // @GetMapping("/get") //这样写也是可以调用的
    String get();
}

4、controller demo

@RestController
public class FeignTest {
    @Autowired
    private FeignCliet feignCliet;
    @GetMapping("/get")
    public String get(){
        return feignCliet.get();
    }
}

配置类与上面的consumer一致即可 但注意端口号不要一致

spring:
  application:
    name: feignClientConSumer
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:9020/eureka/
server:
  port: 9031

启动后浏览器访问
http://localhost:9031/get
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值