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

news/2024/9/18 12:06:56/ 标签: zookeeper, spring cloud

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

1、再次创建一个服务提供者模块,命名为consumerzk-order80
(1)在父工程下新建模块

(2)选择模块的项目类型为Maven并选择模块要使用的JDK版本
(3)填写子模块的名称,然后点完成即可完成创建 

效果图:

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

例:

<?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文件配置
#服务端口号
server:port: 80#服务名称
spring:application:name: cloud-consumer-ordercloud:zookeeper:#zookeeper所在服务的ip和Client的端口号connect-string: 192.168.194.130:2181

 4、为consumerzk-order80子模块新建一个主启动类,类名输入com.ken.springcloud.OrderZkMain80 ,然后创建即可

 效果图:

5、编写consumerzk-order80子模块的主启动类
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类的内容
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负载均衡的能力@LoadBalancedpublic RestTemplate getRestTemplate() {return new RestTemplate();}}

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

效果图:

9、编写OrderZkController控制类的内容 
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";@Resourceprivate RestTemplate restTemplate;@GetMapping("/consumer/payment/zk")public String paymentInfo() {String result = restTemplate.getForObject(INVOKE_URL + "/payment/zk",String.class);return result;}}

10、查看zookeeper的节点
ls /services

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

效果图: 

11、启动consumerzk-order80子模块 

效果图: 

12、重新查看zookeeper的节点
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模块

 


http://www.ppmy.cn/news/1440262.html

相关文章

汽车3D数字化展示让全方位看车触手可及

在数字化浪潮的推动下&#xff0c;VR虚拟看车正成为汽车行业的新宠。这一创新的虚拟沉浸式体验&#xff0c;通过线上线下的深度融合&#xff0c;结合大数据与云计算的先进技术&#xff0c;为汽车行业带来了新的零售模式。作为国内领先的互联网平台&#xff0c;我们深耕汽车行业…

【OceanBase诊断调优 】—— 如何快速定位SQL问题

作者简介&#xff1a; 花名&#xff1a;洪波&#xff0c;OceanBase 数据库解决方案架构师&#xff0c;目前负责 OceanBase 数据库在各大型互联网公司及企事业单位的落地与技术指导&#xff0c;曾就职于互联网大厂和金融科技公司&#xff0c;主导过多项数据库升级、迁移、国产化…

knife4j swagger 使用笔记

1.接口访问的端口跟后台设置的不一致&#xff0c;接口请求无反应 处理办法 2.响应参数不显示问题 &#xff08;1&#xff09;返回的参数里面一定要有响应的参数对象&#xff0c;如下&#xff1a; &#xff08;2&#xff09;TableDataInfo 定义成泛型类 TableDataInfo package…

【黑马点评Redis——002商户查询缓存】

1. 商户查询缓存 2. 知识储备和课程内容 2.1 什么是缓存 缓存是数据交换的缓冲区&#xff0c;是存贮数据的临时地方&#xff0c;一般读写性能较高。 浏览器缓存应用层缓存数据库缓存CPU缓存磁盘缓存 缓存的作用&#xff1a; 降低后端负载提高读写效率&#xff0c;降低响应…

数据分析-pandas2

数据分析-pandas2 接上述1 计算同环比 我们之前讲过一个统计月度销售额的例子&#xff0c;我们可以通过groupby方法做分组聚合&#xff0c;也可以通过pivot_table生成透视表&#xff0c;如下所示。 sale_df pd.read_excel(r"./dates/2020年销售数据.xlsx") sale…

c# 连接数据库、excel数据批量导入到数据库

string str $"select from TBa where ... ";DataSet ds new DataSet();using (SqlConnection conn new SqlConnection("server000.000.0.000;database数据库名;user id登录的用户名;password密码;Poolingtrue")){try{conn.Open();SqlCommand com new Sq…

Android进阶:Bitmap的高效加载和Cache

private final LinkedHashMap<K, V> map; //当前缓存的大小&#xff08;带单位的&#xff09; private int size; //缓存最大容量&#xff08;带单位的&#xff09; private int maxSize; … public LruCache(int maxSize) { if (maxSize < 0) { throw new Il…

新时代凌迟:考研

我不喜欢上班&#xff0c;但我很欣赏老板的品味&#xff0c;因为咱们公司竟然还在订阅报纸&#xff0c;而且只有一份&#xff0c;《中国青年报》。 这份报纸我最喜欢看的是“冰点周刊”专栏&#xff0c;因为这个栏目能让读者相信&#xff1a;报纸远远可以超越一天的生命。 昨天…

Java 基础常见面试题整理

目录 1、java的基本数据类型有哪些&#xff1f;2、java为什么要有包装类型&#xff1f;3、String a "123" 和 String a new String("123") 区别&#xff1f;4、String、StringBuilder和StringBuffer的区别&#xff1f;5、如何理解面向对象和面向过程&…

计算机网络【CN】Ch4 网络层

总结 一台主机可以有多个IP地址&#xff0c;但是必须属于多个逻辑网络【不同的网络号】。 解决IP地址耗尽&#xff1a; IP地址结构&#xff1a; 划分子网&#xff1a;&#x1d43c;&#x1d443;地址<网络号>,<子网号>,<主机号> CIDR&#xff1a;IP地址{&…

计算机网络原原理学习资料分享笔记---第二章/第三节/第四节(为有梦想的自己加油!)

第三节 域名系统&#xff08;DNS&#xff09; 第三节 域名系统&#xff08;DNS&#xff09; 域名系统DNS 第三节 域名系统&#xff08;DNS&#xff09; 知识点 1 域名系统 第三节 域名系统&#xff08;DNS&#xff09; 例&#xff1a;【填空题】 1 、能将域名映射为IP地址…

在no branch上commmit后,再切换到其他分支,找不到no branch分支的修改怎么办?

解决办法 通过git reflog我们可以查看历史提交记录&#xff0c;这里的第二条提交&#xff08;fbd3ea8&#xff09;就是我在no branch上的提交。 再通过git checkout -b backup fbd3ea8&#xff0c;恢复到上次提交的状态&#xff0c;并且为其创建个分支backup&#xff0c;此时…

一文整理完MySQL关系型数据库相关知识

MySQL关系型数据库 1. 介绍1.1 MySQL 2. 安装3. SQL语句4. SQL分类5. DDL5.1 库的DDL5.2 表、列的DDL 6. DML6.1 添加数据6.2 修改数据6.3 删除数据 7. DQL7.1 基础查询7.2 条件查询7.3 排序查询7.4 聚合函数7.5 分组查询7.6 分页查询 8. 约束8.1 约束分类 9. 多表查询9.1 内连…

Angular Subject和BehaviorSubject之间的区别

Subject和BehaviorSubject是RxJS中两种常用的Subject类型。 概念&#xff1a; Subject&#xff1a; Subject是一种特殊的Observable&#xff0c;同时也是Observer。它可以被用来订阅Observable&#xff0c;也可以手动向它推送新的值。Subject是一种热Observable&#xff0c;它…

算子开发到推理加速,一位00后开发者的“升级打怪”之旅

两年多前&#xff0c;郑辉还是一个即将毕业的大四学生&#xff0c;每天沉迷在代码的世界里&#xff0c;忙着准备研究生复试&#xff0c;从未对AI有过太多想法。 没有人会想到&#xff0c;两年后的郑辉已经是一位资深的AI开发者&#xff0c;他独立开发的NonZero算子被合入异构计…

数据结构中的栈和队列(附实际案例代码)

1.栈和队列的定义和特点 栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;是两种基本的数据结构&#xff0c;它们都属于线性表&#xff0c;即数据元素的存储和访问都是线性的。但它们之间也存在着一些区别。 1.1栈的特点 栈是一种后进先出&#xff08;LI…

【Godot4.2】有序和无序列表函数库 - myList

概述 在打印输出或其他地方可能需要构建有序或无序列表。本质就是构造和维护一个纯文本数组。并用格式化文本形式&#xff0c;输出带序号或前缀字符的多行文本。 为此我专门设计了一个类myList&#xff0c;来完成这项任务。 代码 以下是myList类的完整代码&#xff1a; # …

SpringCloud 与 Dubbo 的区别详解

一、Spring Cloud 和 Dubbo 的概述 1.1 SpringCloud 简介 SpringCloud 是一个用于构建云原生应用的框架集合&#xff0c;它为开发者提供了一套完整的工具链&#xff0c;用于快速搭建分布式系统。SpringCloud 基于 SpringBoot 开发&#xff0c;具有如下特点&#xff1a; 提供…

小程序APP屏幕悬浮按钮可拖动可展开

示例&#xff1a; 插件地址&#xff1a;suspensionButton 悬浮按钮 - DCloud 插件市场 使用方式&#xff1a; import pxSuspenButton from /components/px-suspen-button/index components: { pxSuspenButton }, <pxSuspenButton :centerIcon"centerIcon" :bgCo…

Web3与传统互联网:挑战、融合与共生

引言 Web3技术正以惊人的速度改变着我们的互联网体验。作为一个基于区块链的去中心化互联网模型&#xff0c;Web3不仅带来了创新和变革&#xff0c;还引发了与传统互联网之间的对比和讨论。本文将深入探讨Web3与传统互联网之间的关系&#xff0c;挑战&#xff0c;以及可能的融…