1、搭建consul环境:
1.1、本地搭建:
1.1.2:安装一个没有中文的目录即可
2、consul的原理:
3、启动:
3.1:启动必须在consul.exe当前目录cmd窗口启动。
3.2.开发模式 数据保存在内存 重启之后会丢失
consul agent -dev
3.3、服务模式 可以保留以前数据
consul agent -server -ui -bootstrap-expect 1 -data-dir // 下边路径是自己创建一个文件夹data D:\xuexiruanjian\consul\data -node=n1 -bind=127.0.0.1
4、consul服务注册使用步骤
4.1、导入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
4.2、配置:
server:
port: 8001 #项目端口号
spring:
application:
name: consul-provider #服务名
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
heartbeat:
enabled: true #开启心跳检测
prefer-ip-address: true #注册时优先使用ip
enabled: true #开启服务注册与发现 默认就是true
5、feign的使用步骤:
1、导入依赖:消费者导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>
2、创建feign接口,接口上写@FeignClients(被调用方的服务名)
package com.itheima.client;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient("consul-provider")
public interface UserClient {
@GetMapping("/user/getUserName")
public String getUserName(@RequestParam String name);
}
3、添加feign的配置:
feign:
client:
config:
default:
connectTimeout: 3000 #连接超时时间
readTimeout: 6000 #读取数据超时时间
4、开启feign远程调用,@EnableFeignClients
4.1、消费者启动类添加@EnableFeignClients
package com.itheima;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableFeignClients //开启feign远程调用
public class ConsulConsumerApp {
public static void main(String[] args) {
SpringApplication.run(ConsulConsumerApp.class, args);
}
}
5、测试
5.1、消费者调用UserClient
package com.itheima.controller;
import com.itheima.client.UserClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("order")
public class OrderController {
@Autowired
UserClient userClient;
@RequestMapping("getOrder")
public String getOrder(){
String name = userClient.getUserName("zhangsan");
return name;
}
}
6、一个开源的属于哪个公司:
7、feign使用方式
8、consul配置管理:
1.新建配置:
2.consul配置依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
3.配置文件必须叫 bootstrap.yml
3.1、必须要在提供者里配置
server:
port: 8001
spring:
application:
name: consul-provider
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
heartbeat:
enabled: true #开启心跳检测
prefer-ip-address: true #注册时优先使用ip
enabled: true #开启服务注册与发现 默认就是true
config:
enabled: true #开启 从配置中心读取配置 默认true
prefix: config # 配置的前缀
name: abc #配置的名称
data-key: data #数据的key
#consul中 可以的值 就是 prefix + name + data-key config/abc/data
format: yaml #consul中配置的格式
4.通过@Value注解读取配置
@Value("${stu.name}")
private String name;
@Value("${stu.age}")
private int age;
@GetMapping("get")
public String get(){
return "consul config "+ name+" "+age;
}
5.consul热更新:
方式一: @Value注解 + @RefreshScope注解
方式二:使用@ConfigurationProperties注解
5.1。这个实体类必须在提供者
package com.itheima.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Data
@Configuration
@ConfigurationProperties(prefix = "stu")
public class Student {
private String name;
private int age;
}