SpringCloud常用组件

版本对应

SpringCloud常用组件_第1张图片

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 ```

配置中心

  • 准备配置文件

    SpringCloud常用组件_第2张图片

  • 引入依赖

    ```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 {

@GetMapping("/product")
public String product(){
    return "product ok";
}

} ```

超时时间

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 #配置所有服务等待超时

```

你可能感兴趣的:(spring,cloud,java,spring,boot,spring,微服务)