目录
SpingCloud整合Consul实现服务注册
前言
一.环境准备
二.编写服务提供者模块
三.测试服务提供者模块是否搭建成功
四.编写服务消费者模块
五.测试服务消费者模块是否搭建成功
SpingCloud整合Consul实现服务注册
前言
Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。
它提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。能够很容易和springcloud等微服务框架集成。
一.环境准备
1.Windows环境下的Consul
如果还未配置consul环境的同学可以移步我的另外一篇文章喔,那里对如何在Windows环境下安装consul有着很详细的介绍~
Window环境下Consul的介绍与安装教程(超详细!!)https://blog.csdn.net/weixin_47025166/article/details/125502753?spm=1001.2014.3001.5502
2.一个简单的springcloud父项目环境
在cloud2022项目中的pom.xml导入springcloud依赖和一些常规依赖
4.0.0 com.canrioyuan cloud20221.0-SNAPSHOT pom cloud-provider-payment8001 cloud-consumer-order80 cloud-api-commons cloud-eureka-server7001 cloud-eureka-server7002 cloud-provider-payment8002 cloud-provider-payment8004 UTF-8 1.8 1.8 4.12 1.2.17 1.18.24 8.0.21 1.1.21 3.5.1 org.springframework.boot spring-boot-dependencies2.2.2.RELEASE pom import org.springframework.cloud spring-cloud-dependenciesHoxton.SR1 pom import com.alibaba.cloud spring-cloud-alibaba-dependencies2.1.0.RELEASE pom import mysql mysql-connector-java${mysql.version} com.alibaba druid-spring-boot-starter${druid.version} com.baomidou mybatis-plus-boot-starter${mybatis-plus.spring.boot.version} junit junit${junit.version} log4j log4j${log4j.version} org.projectlombok lombok${lombok.version} true org.springframework.boot spring-boot-maven-plugintrue true
二.编写服务提供者模块
1.在cloud2022下创建一个cloud-providerconsul-payment8006作为服务提供者
2.在pom.xml文件中添加常规依赖和consul和一些常规依赖
org.springframework.cloud
spring-cloud-starter-consul-discovery
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
3.编写application.yaml
#consul服务端口号
server:
port: 8006
spring:
application:
name: consul-provider-payment #服务名字
#consul注册中心地址
cloud:
consul:
host: localhost
port: 8500
discovery:
#hostname: 127.0.0.1
service-name: ${spring.application.name}
4.编写主启动类PaymentMain8006
package com.canrioyuan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient //该注解用于使用consul和zookeeper时作为注册中心提供服务
public class PaymentMain8006 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8006.class,args);
}
}
5.编写PaymentController
package com.canrioyuan.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.UUID;
@RestController
@Slf4j
public class PaymentController {
@Value("${sever.port}")
private String serverPort;
@GetMapping(value="/payment/consul")
public String paymentConsul(){
return "springcloud with consul"+serverPort+"t"+ UUID.randomUUID().toString();
}
}
三.测试服务提供者模块是否搭建成功
1.运行consul
在命令行端口输入consul agent -dev,启动consul
consul agent -dev
启动成功后如下图所示
2.运行PaymentMain8006
运行成功后如下图所示:
3.访问 http://localhost:8006/payment/consul
访问成功后如下图所示
4.访问 http://localhost:8500
可以看到consul的web端中已经对服务提供者的服务进行注册
四.编写服务消费者模块
1.在cloud2022下创建一个cloud-consumerconsul-order80作为服务消费者
2.在pom.xml文件中添加常规依赖和consul和一些常规依赖
org.springframework.cloud
spring-cloud-starter-consul-discovery
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
3.编写application.yaml
###consul服务端口号
server:
port: 80
spring:
application:
name: cloud-consumer-order
####consul注册中心地址
cloud:
consul:
host: localhost
port: 8500
discovery:
#hostname: 127.0.0.1
service-name: ${spring.application.name}
4.编写主启动类OrderConsulMain80
package com.canrioyuan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient //该注解用于向使用consul或者zookeeper作为注册中心时注册服务
public class OrderConsulMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderConsulMain80.class, args);
}
}
5.编写配置类ApplicationContextConfig(用于注册RestTemplate)
package com.canrioyuan.controller;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ApplicationContextConfig {
@Bean //将RestTemplate注册到容器中
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
6.编写OrderConsulController
package com.canrioyuan.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class OrderConsulController
{
public static final String INVOKE_URL = "http://cloud-provider-payment"; //consul-provider-payment
@Autowired
private RestTemplate restTemplate;
@GetMapping(value = "/consumer/payment/consul")
public String paymentInfo()
{
String result = restTemplate.getForObject(INVOKE_URL+"/payment/consul", String.class);
System.out.println("消费者调用支付服务(consule)--->result:" + result);
return result;
}
}
五.测试服务消费者模块是否搭建成功
1.启动该服务消费者模块
2.访问 http://localhost/consumer/payment/consul
访问成功后如下图所示
3.访问 http://localhost:8500
可以看到我们的消费者模块和服务提供者模块都已经被注册进Services中



