当前位置: 首页>后端>正文

spring 远程关闭服务器线程 spring cloud远程调用

SpingCould使用Fegin远程调用

SpringCloud是一个完整的微服务解决方案 将许多优秀的框架以及组件集成进来 所以说它是一个集大成者

它基于SpringBoot构建 SpringCloud是离不开Springboot的

SqiangCloud技术栈

服务发现——Netflix Eureka
服务调用——Netflix Feign
配置中心——Spring Cloud Config
服务网关——Netflix Zuul
消息总线——Spring Cloud Bus
熔断器——Netflix Hystrix
负载均衡
数据监控等

本篇文章实现SpringCloud使用Fegin组件远程调用一个简单demo

1.先创建 一个Maven父工程不用添加任何依赖

2.在父工程下创建一个 eureka-server SpringInitializr项目作为子项目

spring 远程关闭服务器线程 spring cloud远程调用,spring 远程关闭服务器线程 spring cloud远程调用_spring,第1张

这里需要开启一个Eureka-Server依赖

之后配置yml

spring:
  application:
    name: eureka-server
server:
  port: 8080
eureka:
  server:
    enableSelfPreservation: true
  instance:
    hostname: localhost
  client:
    register-with-eureka: false
    fetch-registry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

在eureka-Server项目启动类使用注解开启服务

@EnableEurekaServer

spring 远程关闭服务器线程 spring cloud远程调用,spring 远程关闭服务器线程 spring cloud远程调用_spring boot_02,第2张

之后启动项目访问 http://localhost:8080/

spring 远程关闭服务器线程 spring cloud远程调用,spring 远程关闭服务器线程 spring cloud远程调用_spring boot_03,第3张

这里便是启动服务端 Eureka的服务注册中心

出现服务注册中心后就是要创建客户端向Eureka服务中心注册

创建第二个SpringInitializr 模块名为 eureka-client

添加客户端依赖

spring 远程关闭服务器线程 spring cloud远程调用,spring 远程关闭服务器线程 spring cloud远程调用_spring 远程关闭服务器线程_04,第4张

在eureka-client项目启动类处开启注解

@EnableEurekaClient

spring 远程关闭服务器线程 spring cloud远程调用,spring 远程关闭服务器线程 spring cloud远程调用_spring_05,第5张

配置yml文件

spring:
  application:
    name: eureka-client
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/kt_edu?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
      username: root
      password: hzy
      driverClassName: com.mysql.jdbc.Driver
      initialSize: 5  #初始建立连接数量
      minIdle: 5  #最小连接数量
      maxActive: 20 #最大连接数量
      maxWait: 10000  #获取连接最大等待时间,毫秒
      testOnBorrow: true #申请连接时检测连接是否有效
      testOnReturn: false #归还连接时检测连接是否有效
      timeBetweenEvictionRunsMillis: 60000 #配置间隔检测连接是否有效的时间(单位是毫秒)
      minEvictableIdleTimeMillis: 300000  #连接在连接池的最小生存时间(毫秒)
eureka:
  client:
    registerWithEureka: true #服务注册开关
    fetchRegistry: true #服务发现开关
    serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址,多个中间用逗号分隔
      defaultZone: http://localhost:8080/eureka/
  instance:
    prefer-ip-address:  true  #将自己的ip地址注册到Eureka服务中
    ip-address: ${IP_ADDRESS:127.0.0.1}
    instance-id: ${spring.application.name}:${server.port} #指定实例id
server:
  port: 8090

OK后再启动 eureka-client项目

去注册中心看是否存在

spring 远程关闭服务器线程 spring cloud远程调用,spring 远程关闭服务器线程 spring cloud远程调用_spring_06,第6张


这里们看到已经成功注册到了Server注册中心

红色的地方 是我没有关闭自我保护机制
配置文件加上或者修改这个配置
eureka.server.enable-self-preservation=false

下面就可以在Client子工程写我们的方法了

这里的一个查询方法就跳过了

spring 远程关闭服务器线程 spring cloud远程调用,spring 远程关闭服务器线程 spring cloud远程调用_spring_07,第7张

最后一步再创建一个客户端工程

同eureka-client创建一样的工程 添加一样的依赖
加上一个依赖 使用Fegin

<!-- 使用eureka -->
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
            <version>1.4.4.RELEASE</version>
        </dependency>

配置yml

spring:
  application:
    name: eureka-client
  datasource:
    druid:
      url: jdbc:mysql://121.199.47.53:3306/kt_edu?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
      username: root
      password: hzy
      driverClassName: com.mysql.jdbc.Driver
      initialSize: 5
      minIdle: 5
      maxActive: 20
      maxWait: 10000
      testOnBorrow: true
      testOnReturn: false
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 300000
eureka:
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://localhost:8080/eureka/
  instance:
    prefer-ip-address:  true
    ip-address: ${IP_ADDRESS:127.0.0.1}
    instance-id: ${spring.application.name}:${server.port}
    hostname: localhost
server:
  port: 8091

这里实体类就没放一个Module了
把前面的实体类扣过来

创建包 FeignClient 下创建 接口 IProductClient

package com.xiaohe.FeignClient;

import com.xiaohe.pojo.Teacher;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

@FeignClient(name = "EUREKA-CLIENT")
public interface IProductClient {

    @GetMapping("/edu/teacher/findAll")
    List<Teacher> findAll();

}

@FeignClient(name = “EUREKA-CLIENT”)

里面的就是注册到服务中心的名字

路径就是第一个客户端Controller的全访问路径

spring 远程关闭服务器线程 spring cloud远程调用,spring 远程关闭服务器线程 spring cloud远程调用_spring boot_08,第8张

最后这边一个Controller访问这个方法调用第一个客户端的查询方法

spring 远程关闭服务器线程 spring cloud远程调用,spring 远程关闭服务器线程 spring cloud远程调用_spring_09,第9张

具体就是这个结构

测试 我们就可以通过这个8091端口去访问 到 8090端口的方法

使用Feign可使得Web服务客户端的写入更加方便

以上就实现了SpringCloud强大组件Fegin的远程调用

 


https://www.xamrdz.com/backend/3c71935796.html

相关文章: