Consul+SpringCloud微服务(入门三)
1.安装Consul
我是用的是docker进行安装:
拉取镜像
[root@VM-24-4-centos ~]# docker pull consul Using default tag: latest latest: Pulling from library/consul 9621f1afde84: Pull complete 4cade7a0e680: Pull complete 0b4cab59f493: Pull complete 2fd2812543da: Pull complete 6c601956b715: Pull complete 1dd1d7893a45: Pull complete Digest: sha256:7e8ad15dbd233dc1c12e298a3c25a8b614d1e185d239f14e483ca7dd4c7a5894 Status: Downloaded newer image for consul:latest docker.io/library/consul:latest
运行容器
#启动consul docker run -d -p 8500:8500/tcp --name myConsul consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0
运行成功:
开放8500防火墙:
在浏览器上访问:
2.Consul注册
1.Provider提供者服务
新建服务提供者cloud-provider-consul-payment-8006
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--热部署--> <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> <!--commons--> <dependency> <groupId>cn.zko0.cloud</groupId> <artifactId>cloud-api-commons</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--替换掉eureka依赖,其他直接复制8001--> <!--SpringBoot整合Consul--> <!--SpringCloud consul-server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> </dependencies>
yml:
server: port: 8006 spring: application: name: consul-provider-payment cloud: consul: host: 101.43.244.40 #用linux的ip地址(consul在本机就填localhost) port: 8500 discovery: service-name: ${spring.application.name} #Service check机制,新版本需要 heartbeat: enabled: true
Controller:
@RestController @Slf4j public class PaymentController { @Value("${server.port}") //获取端口号 private String serverPort; @RequestMapping("/payment/consul") public String paymentConsul(){ return "springcloud with consul:" + serverPort + "\t" + UUID.randomUUID().toString(); } }
入口类:
@SpringBootApplication @EnableDiscoveryClient public class PaymentMain8006 { public static void main(String[] args) { SpringApplication.run(PaymentMain8006.class,args); } }
启动项目,查看consul:
2.Consuemr消费者服务
创建模块:cloud-consumer-consul-order80
pom.xml:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--热部署--> <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> <!--commons--> <dependency> <groupId>cn.zko0.cloud</groupId> <artifactId>cloud-api-commons</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!--SpringBoot整合Consul--> <!--SpringCloud consul-server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> </dependencies>
yml:
server: port: 80 spring: application: name: consul-consumer-order cloud: consul: host: 101.43.244.40 #用linux的ip地址(consul在本机就填localhost) port: 8500 discovery: service-name: ${spring.application.name} #Service check机制,新版本需要 heartbeat: enabled: true
启动类:
@SpringBootApplication @EnableDiscoveryClient public class OrderMainConsul80 { public static void main(String[] args) { SpringApplication.run(OrderMainConsul80.class,args); } }
Controller:
@RestController @Slf4j public class OrderController { public static final String INVOKE_URL = "http://consul-provider-payment"; @Resource private RestTemplate restTemplate; @RequestMapping("/consumer/payment/consul") public String paymentInfo(){ String result = restTemplate.getForObject(INVOKE_URL + "/payment/consul", String.class); return result; } }
启动,成功:
3.Consumer调用Provider测试
远程调用服务成功
标签:
微服务
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!