这一小节我们通过Consul来实现服务注册中心,具体的流程可参考zookeeper的,我们仍然不管持久层等代码,直接配置环境即可。
一、实现服务提供者
第1步:建Module
在mscloud下新建cloud-provider-payment8006模块
第2步:改pom
pom中主要将zk的依赖换为consul的依赖,具体如下:

程序员导航
优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站
mscloud com.panziye.springcloud 1.0-SNAPSHOT 4.0.0 cloud-provider-payment8006 org.springframework.cloud spring-cloud-starter-consul-discovery com.panziye.springcloud cloud-api-commons ${project.version} 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步:写yml
resoures下的application.yml配置如下:
server:
port: 8006
spring:
application:
name: consul-payment-service
cloud:
#consul服务注册中心配置
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
第4步:主启动类
新建PaymentMain8006 主启动类:
package com.panziye.springcloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class PaymentMain8006 { public static void main(String[] args) { SpringApplication.run(PaymentMain8006.class,args); } }
第5步:业务类
我们这里就只新建个PaymentControlelr类:
package com.panziye.springcloud.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;
@RestController
@Slf4j
public class PaymentControlelr {
@Value("${server.port}")
private String serverPort;
@GetMapping(value = "/payment/consul")
public String consul(){
return "payment consul server port:"+serverPort+",随机数:"+ Math.random();
}
}
第6步:测试
我们启动consul和8006服务,浏览器访问http://localhost:8006/payment/consul和http://localhost:8500/,,发现服务注册成功:


AI 工具导航
优网导航旗下AI工具导航,精选全球千款优质 AI 工具集
二、实现服务消费者
服务消费者的实现与zookeeper中的类似,我们步骤如下:
第1步:建Module
在mscloud下新建cloud-consumer-consul-order80模块
第2步:改pom
pom中主要将zk的依赖换为consul的依赖,具体如下:
mscloud com.panziye.springcloud 1.0-SNAPSHOT 4.0.0 cloud-consumer-consul-order80 org.springframework.cloud spring-cloud-starter-consul-discovery com.panziye.springcloud cloud-api-commons ${project.version} 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步:写yml
resoures下的application.yml配置如下:
server:
port: 80
spring:
application:
name: cloud-order-consul-service
cloud:
#consul服务注册中心配置
consul:
host: localhost
port: 8500
discovery:
service-name: ${spring.application.name}
第4步:主启动类
新建OrderConsulMain80 主启动类:
package com.panziye.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class OrderConsulMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderConsulMain80.class,args);
}
}
第5步:业务类
1)在config在新建ApplicationContextCofig:

免费在线工具导航
优网导航旗下整合全网优质免费、免注册的在线工具导航大全
package com.panziye.springcloud.config;
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 ApplicationContextCofig {
/**
* 配置RestTemplate
* @return
*/
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
2)controller中新建OrderController:
package com.panziye.springcloud.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
@RestController
@Slf4j
public class OrderController {
// 注册中心中服务地址-consul中service名称
public static final String PAYMENT_URL = "http://consul-payment-service";
@Resource
private RestTemplate restTemplate;
@GetMapping("/consumer/payment/consul")
public String consul(){
return restTemplate.getForObject(PAYMENT_URL+"/payment/consul",String.class);
}
}
第6步:测试
再启动OrderConsulMain80,访问浏览器测试:
1)http://localhost/consumer/payment/consul

2)http://localhost:8500/

© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...



