• SpringCloud常用组件


    版本对应

    ···.png

    Nacos

    注册中心

    服务端

    • 下载安装:https://github.com/alibaba/nacos/tags
    • 服务列表展示:http://localhost:8848/nacos/ 账号密码:nacos
    • 启动:windows默认单机版本启动,linux默认集群版本
      • 单机版:startup.cmd -m standalone
      • 集群版:startup.cmd -m cluster

    客户端

    • 引入依赖

      properties com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery

    • 主启动类加注解

      ```java @SpringBootApplication @EnableDiscoveryClient public class NacosClientApplication {

      public static void main(String[] args) {

      SpringApplication.run(NacosClientApplication.class,args);

      } } ```

    • 配置文件

      ```java server.port=9600

      spring.application.name=user

      spring.cloud.nacos.server-addr=localhost:8848 ```

    配置中心
    • 准备配置文件

      nacos配置文件.png

    • 引入依赖

      ```properties com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery

      com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config ```

    • 主启动类

      ```java @SpringBootApplication @EnableDiscoveryClient public class ConfigClientApplication {

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

    • 预定义配置,bootstrap.properties,如果配置中心和项目中的配置文件都配了相同属性,以配置中心为主

      方式一:

      ```properties

      注册中心地址

      spring.cloud.nacos.config.server-addr=localhost:8848

      从哪个命名空间拉取配置

      spring.cloud.nacos.config.namespace=2ce4b2b1-d4f3-4667-91aa-803d5088c1f0

      从哪个组中拉取配置

      spring.cloud.nacos.config.group=users

      拉取哪个配置文件

      spring.cloud.nacos.config.name=myconfig.、properties ```

      方式二:

      yaml spring: application: name: ruoyi-system profiles: active: dev cloud: nacos: discovery: server-addr: localhost:8846,localhost:8847,localhost:8848 config: server-addr: localhost:8846,localhost:8847,localhost:8848 file-extension: yaml shared-configs: # 共享配置 - application-dev.yaml

    • 编写controller,读取配置文件测试

      ```java @RestController @Slf4j @RefreshScope // 自动刷新配置 public class ConfigController {

      @Value("${customer.username}") private String username; // 注入配置文件的属性值

      @GetMapping("/demo") public String say(){ return "ok:"+username; } } ```

    • 注意:

      消费者和提供者的命名空间必须相同才能调用,命名空间会将服务完全隔离

    Feign

    快速入门

    调用端

    • 引入依赖

      ```properties org.springframework.cloud spring-cloud-starter-openfeign

      org.springframework.cloud spring-cloud-starter-loadbalancer ```

    • 入口类加注解,开启Feign支持

      ```java @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients public class CategoryApplication { public static void main(String[] args) { SpringApplication.run(CategoryApplication.class,args); }

      } ```

    • 创建一个服务调用接口

      ```java @FeignClient(value = "product") // 被调用服务名称 public interface ProductClient {

      @GetMapping("/product") // 要调用服务的接口 public String product();

      } ```

    • controller中使用

      ```java @RestController public class UserController {

      @Autowired private ProductClient productClient;

      @GetMapping("/service") public String find(){ return productClient.product(); // 调用远程服务 } } ```

    被调用端

    ```java @Slf4j @RestController public class ProductController {

    1. @GetMapping("/product")
    2. public String product(){
    3. return "product ok";
    4. }

    } ```

    超时时间

    Feign在进行服务调用时,要求服务提供方必须在1s内返回,如果超过1s没有返回则直接报错

    ```properties feign.client.config.PRODUCTS.connectTimeout=5000 #配置指定服务连接超时 feign.client.config.PRODUCTS.readTimeout=5000 #配置指定服务等待超时

    feign.client.config.default.connectTimeout=5000 #配置所有服务连接超时

    feign.client.config.default.readTimeout=5000 #配置所有服务等待超时

    ```

  • 相关阅读:
    如何用程序化交易思想来逐步完善用户的交易行为?
    景区导览小程序怎么开发,需要哪些功能?
    这有几个常见的电脑故障解决方法,需要的朋友快来
    手机扫描二维码的测试用例
    【树】树的直径和重心
    【Try to Hack】php命令执行和代码执行
    SpringBoot+@EnableScheduling使用定时器的常见案例
    [数据库与软件工程]三、关系运算(并、交、笛卡尔积,自然连接等)
    力扣每日一题 矩阵中移动的最大次数 DP
    我服了!SpringBoot升级后这服务我一个星期都没跑起来!(上)
  • 原文地址:https://blog.csdn.net/weixin_45519907/article/details/127729012