以订单服务调用支付服务为例
1.官方下载安装consul
我们在这里下载的windows 64版本的最新的consul 客户端
下载完成解压
并且在当前目录的地址栏启动cmd
查看版本 consul --version
以开发环境启动 consul agent -dev
浏览器打开 http://localhost:8500
如果出现 以下界面则表示consul启动成功
2.创建支付服务
2.1 修改pom
<dependencies>
<!--SpringCloud consul-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<!-- SpringBoot整合Web组件 -->
<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>
<!--日常通用jar包配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
</dependencies>
2.2修改yml
server:
port: 8006 #端口号
spring:
application:
name: consul-provider-payment #spring应用名称
cloud:
consul:
host: localhost #consul主机名
port: 8500 #consul 端口号
discovery:
service-name: ${spring.application.name} #注册进consul 该服务的名称设置为spring应用名称
2.3创建主启动类
2.4创建controller
2.5启动
启动成功后我们进入consul的web视图查看
http://localhost:8500
此时,我们的支付服务 注册进consul成功
3.创建订单服务
3.1 pom
<dependencies>
<!--SpringCloud consul-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<!-- SpringBoot整合Web组件 -->
<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>
<!--日常通用jar包配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
3.2 修改yml
server:
port: 80
spring:
application:
name: consul-consumer-order
cloud:
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
3.3创建主启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @author Xkuna
* @date 2020/8/5 0:14.
*/
@SpringBootApplication
@EnableDiscoveryClient
public class OrderConsul80 {
public static void main(String[] args) {
SpringApplication.run(OrderConsul80.class, args) ;
}
}
3.4 创建restTempalte的配置类
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;
/**
* @author Xkuna
* @date 2020/8/5 0:15.
*/
@Configuration
public class ApplicationWebConfig {
@Bean
//该注解实现ribbon的负载均衡
@LoadBalanced
public RestTemplate getInstance() {
return new RestTemplate() ;
}
}
3.5创建controller
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
/**
* @author Xkuna
* @date 2020/8/5 0:16.
*/
@RestController
public class OrderController {
@Resource
private RestTemplate restTemplate ;
//url为调用的支付服务名 实现负载均衡
private static String paymentUrl = "http://consul-provider-payment" ;
@RequestMapping("/order/consul")
public String getPaymentConsul(){
return restTemplate.getForObject(paymentUrl + "/payment/consul", String.class) ;
}
}
3.6 启动订单服务
启动成功后,进入consul的web可视化界面
http://localhost:8500
如图我们的订单服务成功注册进 consul
3.6 订单服务调用支付服务
调用成功! 简单的consul 服务之间的调用实现
4. 结束语
关于consul的服务注册 是不是很简单呢?加油 !!😄😄