34、微服务注册中心Consul
1、安装Consul 服务器 ,在win10下安装,进入官网下载zip 解压之后得到 consul.exe文件,进入安装目录下打开cmd终端输入命令:consul agent -dev
2、将服务提供者注册到consul注册中心
创建cloud-provider-consul-payment8006 项目,添加pom依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.atguigu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
编写application.yml
server: port: 8006 spring: application: name: cloud-consul-payment-service cloud: consul: host: localhost port: 8500 discovery: service-name: ${spring.application.name}
编写主启动类
@SpringBootApplication @EnableDiscoveryClient public class PaymentApplication8006 { public static void main(String[] args) { SpringApplication.run(PaymentApplication8006.class,args); } }
编写业务类controller
@RestController @RequestMapping(value = "/payment") public class PaymentController { @Value("${server.port}") private String serverPort; @GetMapping(value = "/consul") public String paymentInfo() { return "springcloud with consul serverPort: " + serverPort + UUID.randomUUID().toString(); } }
启动项目查看:localhost:8500 注册中心是否有服务提供者的注册信息
版本测试:http://localhost:8006/payment/consul
3、将服务消费者注册到consul注册中心
创建cloud-consumerconsul-order80 消费者服务,添加pom依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.atguigu.springcloud</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
编写application.yml配置文件
server: port: 80 spring: application: name: cloud-order-consul-service cloud: consul: host: localhost port: 8500 discovery: service-name: ${spring.application.name}
创建主启动类
@SpringBootApplication @EnableDiscoveryClient public class OrderConsulApplication80 { public static void main(String[] args) { SpringApplication.run(OrderConsulApplication80.class,args); } }
编写RestTenplate配置类注入到容器中
@Configuration public class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate restTemplate () { return new RestTemplate(); } }
编写业务类controller
@RestController @Slf4j @RequestMapping(value = "/consumer") public class OrderConsulController { private static final String REST_URL = "http://cloud-consul-payment-service"; @Resource private RestTemplate restTemplate; @GetMapping(value = "/payment/consul") public String paymentInfo() { String result = restTemplate.getForObject(REST_URL + "/payment/consul", String.class); return result; } }
查看consul注册中心是否有服务消费者的注册信息

浙公网安备 33010602011771号