SpringCloud系列(17)--将服务消费者Consumer注册进Zookeeper

前言:在上一章节中我们把服务提供者Provider注册进了Zookeeper,而本章节则是关于如何将服务消费者Consumer注册进Zookeeper

1、再次创建一个服务提供者模块,命名为consumerzk-order80
(1)在父工程下新建模块
(2)选择模块的项目类型为Maven并选择模块要使用的JDK版本
(3)填写子模块的名称,然后点完成即可完成创建

效果图:

(4)修改consumerzk-order80子模块的pom.xml文件,然后reolad一下,下载依赖

例:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud01</artifactId>
        <groupId>com.ken.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>consumerzk-order80</artifactId>


    <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>
        <!--lombok插件-->
        <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>
        <!--引入自己定义的api调用包,可以使用Payment模块的entity-->
        <dependency>
            <groupId>com.ken.springcloud</groupId>
            <artifactId>api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--Zookeeper Clinet-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        </dependency>
    </dependencies>

</project>
2、为子模块添加名为application的yml配置文件(注:yml是官方推荐的配置文件格式,最好使用yml文件而不是properties文件)

效果图:

3、修改application.yml文件配置
XML 复制代码
#服务端口号
server:
  port: 80

#服务名称
spring:
  application:
    name: cloud-consumer-order
  cloud:
    zookeeper:
      #zookeeper所在服务的ip和Client的端口号
      connect-string: 192.168.194.130:2181
4、为consumerzk-order80子模块新建一个主启动类,类名输入com.ken.springcloud.OrderZkMain80 ,然后创建即可

效果图:

5、编写consumerzk-order80子模块的主启动类
java 复制代码
package com.ken.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
//该注解用于向使用consul或zookeeper作为注册中心时注册服务
@EnableDiscoveryClient
public class OrderZkMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderZkMain80.class, args);
    }
}

效果图:

6、在com.ken.springcloud包下新建config包和ApplicationContextConfig类,在类名输入config.ApplicationContextConfig,然后创建即可

效果图:

7、编写ApplicationContextConfig类的内容
java 复制代码
package com.ken.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 ApplicationContextConfig {

    /**
     * RestTemplate提供了多种便捷访问远程Http服务的方法,是一种简单便捷的访问restful服务模板类,是Spring提供的用于访问Rest服务的客户端模板工具集
     */
    @Bean
    //@LoadBalanced注解赋予RestTemplate负载均衡的能力
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }

}
8、在com.ken.springcloud包下新建controller包和OrderZkController控制类,在类名输入controller.OrderZkController,然后创建即可

效果图:

9、编写OrderZkController控制类的内容
java 复制代码
package com.ken.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 OrderZkController {

    public static final String INVOKE_URL = "http://cloud-payment-service";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/consumer/payment/zk")
    public String paymentInfo() {
        String result = restTemplate.getForObject(INVOKE_URL + "/payment/zk",String.class);
        return result;
    }

}
10、查看zookeeper的节点
XML 复制代码
ls /services

可以发现现在zookeeper里的节点就只有一个cloud-payment-service

效果图:

11、启动consumerzk-order80子模块

效果图:

12、重新查看zookeeper的节点
XML 复制代码
ls /services

可以发现现在zookeeper里的节点多出了一个clous-consumer-order节点,这个clous-consumer-order节点就是我们的consumerzk-order80服务,这证明consumerzk-order80成功注册进了zookeeper里

效果图:

13、请求接口查看服务是否正常运行

在地址栏输入http://localhost/consumer/payment/zk并回车调用接口,可以看到数据返回成功,这证明consumerzk-order80模块可以成功调用注册进zookeeper的provider-payment8004模块

相关推荐
Dolphin_Home9 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
Mr.朱鹏11 小时前
SQL深度分页问题案例实战
java·数据库·spring boot·sql·spring·spring cloud·kafka
TSAI15 小时前
Docker Swarm 集群部署 Eureka 服务注册中心:高可用微服务架构的基石
spring cloud·docker
中国胖子风清扬15 小时前
SpringAI和 Langchain4j等 AI 框架之间的差异和开发经验
java·数据库·人工智能·spring boot·spring cloud·ai·langchain
元Y亨H17 小时前
【深度解析】Seata 分布式事务:核心作用、原理与实战配置指南
spring cloud·微服务
spencer_tseng18 小时前
springcloud + javaframework + h5
java·spring·spring cloud
小徐Chao努力20 小时前
Spring AI Alibaba A2A 使用指南
java·人工智能·spring boot·spring·spring cloud·agent·a2a
郑州光合科技余经理20 小时前
实战分享:如何构建东南亚高并发跑腿配送系统
java·开发语言·javascript·spring cloud·uni-app·c#·php
DKunYu21 小时前
5.优雅实现远程调用-OpenFeign
spring cloud·微服务
YDS8291 天前
SpringCloud —— Sentinel详解
java·spring cloud·sentinel