dubbo(尚硅谷)学习笔记2

news2025/1/12 9:54:38

我们现在来做dubbo和springboot整合:

我们先来创建一个springboot项目:

然后把serviceimpl层拷贝过来。

 

 因为我们这个也需要用到公用接口和实体类,所以还是需要导入一下这个依赖:

同样的我们也需要创建一个服务的消费者:

消费者我们选用web的方式。

然后我们同样导入这个公用的interface依赖。

 同样向上面那样复制消费者的实现。

这里我们改动一下。

这样我们就可以把数据以json的格式返回到页面上了。

 同样我们这里现在也要配置,不然不配置肯定是失败的。

步骤都差不多。

导入的依赖不同,配置文件写法不同,这里用注解的方式。

然后我们去配置文件中做相关配置:

 

然后我们要给我们的userservice配上两个重要的注解。

注意这里的service是dubbo下的注解。

我们去启动一下。

我们就看到了我们的服务。

在消费者里我们同样要引dubbo-springboot-starter依赖。

 然后我们还是要来写配置文件:

我们使用这个注解。可以从注册中心中拿到这个服务。

同样加上这个注解。

给它加上端口号。

然后我们启动消费者服务。

 

我们可以查到它。

我们就查到了这个内容。

其实主要就是三大步,pom引入依赖,编写配置文件,使用注解。

我们的覆盖优先级上面的高于下面的。

那我们就来试一下:

 

然后我们去启动一下:

我们发现使用的是20881.

 

我们现在把它注释掉,再去重新启动。

它就变成20882了。

 然后现在我们来配置虚拟机参数:

所以我们可以发现我们的优先级,虚拟机参数最高,然后是application配置,最后是dubbo配置。

 

我们现在来直接启动消费者:

它会进行报错,因为我们没有启动提供者,就直接启动消费者了,这样报错,程序终止。

 

我们配置了这个以后,我们再去启动一下我们的服务:

虽然会报错,但是它会进行输出,只有遇到需要调用service时才会报错,而不是一开始就报错。

但是我们这是在一个接口去配置,但是如果有多个接口,每一个都去配置会比较麻烦,所以这里我们还可以这么来写:

 

可以直接这样去配置,让所有的消费者都不检查。

 参照文档,注册中心registry也可以做这个配置。

超时&配置覆盖关系:

 我们可以配置超时,因为有的时候我们的消费者在调用提供者的方法时,可能会出现网络不佳的情况,所以我们这里可以去给它配置我们的超时时间。

然后我们人为的让服务提供者去睡上4秒。

再去启动提供者和消费者:

我们现在不去设置超时,去启动测试一下:

 

它会进行报错。

我们的超时默认是1000毫秒。

我们现在把超时设置为5000毫秒:

我们就运行完成了。

我们知道我们的reference是单独给每个接口进行配置的,那么我们也可以进行统一配置:

我们 还可以在reference里配置我们的method,这样可以具体到接口里的某一个方法。这里我们也给它配置一个超时设置,那么我们运行时会执行哪个超时设置呢?

我们发现报错了。也就是我们精确的设置的优先级会高于我们整体的设置。

这是它们的优先级级别,1是优先级最高,3是优先级最低。

<!--声明需要调用的远程服务的接口;生成远程服务代理  -->
<!--
  1)、精确优先 (方法级优先,接口级次之,全局配置再次之)
  2)、消费者设置优先(如果级别一样,则消费方优先,提供方次之)
-->

 

我们现在再来做一个操作:

消费者:

提供者:

那我们现在是消费者优先还是精确优先呢?

 

我们发现出错了,所以可以看出来是在同等精确级别下,消费者优先。

重试次数:

我们给方法里加一段输出语句。

我们的提供方是配置了超时的:

我们在消费者里去配置重试次数:

现在我们能看到一共有3个提供者。

然后我们去启动消费者:

报错。

我们的提供者1试了一次。

提供者2也试了一次。

提供者3试了2次。

一共也重试了4次,并且它不会一棵树上吊死。一个不行,就再去找其它的。

注:

 

我们现在写了一个老版本。

我们再去为这个接口去写一个新的版本:

 

我们现在相当于一个接口,我们有了两个版本 。那么我们就可以在provider.xml里去配置出来:

 

我们这样就在我们的xml文件里配置了两个service接口。

 然后我们就可以在consumer中去配置:

我们可以指定我们用提供者里的哪个版本的接口。

那我们去启动一下看看:

 

我们也可以启动新版本:

 

 当然我们还可以配置随机调用接口版本:

本地存根:

 我们现在来创建一个本地的存根:

 接下来我们要在消费者的xml中进行一个配置:

 然后我们在存根中加一个输出语句,运行时看看是否走了我们的存根:

 然后我们去运行一下:

我们发现我们使用了存根。

然后我们正常应该把存根放到我们的提供者下面,因为我们正常是在消费者调用服务之前进行一些其它的操作才会使用存根。

 与SpringBoot整合的三种方式:

我们之前呢,使用的是xml的方式去做一些dubbo中的配置,我们有些可以直接利用注解完成:

比如我们可以用这种方式去做超时处理。

但是有些配置我们光依赖注解是没法去完成的:

比如我们这种精确到方法中的。

 SpringBoot和dubbo整合的三种方式:

1.导入dubbo-starter,在application.properties配置属性,使用@Service[暴露服务],使用@Reference[引用服务]

这种方式我们使用@EnableDubbo注解

 就可以开启基于注解的dubbo功能。

那么我们现在来说第二种方式:

这种方式我们来保留dubbo的xml文件的方式:

我们把之前的xml文件复制过来:

 

那么我们这种方式就不需要我们的application文件了。

 

我们直接用之前学的xml的方式就可以了。

然后我们再启动一下我们的提供者(boot版本):

 这个方法我们保留dubbo.xml配置文件。

导入dubbo-starter,使用@ImportResource导入dubbo的配置文件即可:

当然我们还有第三种方式:

使用注解api的方式:

将每一个注解手动创建到容器中:

我们看到有application标签。

那就把它以类的方式注入springboot:

 

 

有注册中心标签,也把它以类的形式注入:

 

 

还有通信规则,那我们把通信规则也以类的方式注入出来:

 

 

我们还有服务标签,那么我们把它也配置出来:

 

我们如果还想用其它标签,那么我们也可以去把其它标签进行配置相关的配置类即可。

 让dubbo来扫描其它的组件。

启动类上配置相关的注解。

 

运行以后也没有什么问题。

我们的dubbo的主要使用的配置基本上就都有学习到了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/118044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式之美总结(行为型篇)

title: 设计模式之美总结&#xff08;行为型篇&#xff09; date: 2022-12-26 17:25:29 tags: 设计模式 categories:设计模式 cover: https://cover.png feature: false 文章目录1. 观察者/发布订阅模式&#xff08;Observer Design Pattern/Publish-Subscribe Design Pattern…

Unity2D像素游戏开发——Aseprite简单人物绘画+动画制作导出精灵表示例

目录 前言 什么是帧&#xff1f; 什么是Aseprite&#xff1f; 运行环境 正文 示例&#xff1a;绘制人物 制作多帧动画 微调 导出精灵表 总结 作品欣赏 附一个下载链接&#xff1a; 前言 什么是帧&#xff1f; 我们看到的动画都是由一张张图片连续播放而成的&#…

scipy

scipy.interpolate插值方法 import numpy as np def func(x, y):return x*(1-x)*np.cos(4*np.pi*x) * np.sin(4*np.pi*y**2)**2grid_x, grid_y np.mgrid[0:1:100j, 0:1:200j]rng np.random.default_rng() points rng.random((1000, 2)) values func(points[:,0], points[:…

高颜值蓝牙耳机有哪些?音质好颜值高的蓝牙耳机推荐

喜欢安静的人们&#xff0c;相信都会有一副蓝牙耳机吧&#xff0c;作为我们生活当中必不可少的数码产品&#xff0c;除了手机以外&#xff0c;蓝牙耳机几乎也是使用率很高的&#xff0c;它通过蓝牙连接&#xff0c;非常方便&#xff0c;下面是小编精心挑选的四款蓝牙耳机。 一…

告别“限速”,个人网盘进入云时代

配图来自Canva可画 在数字经济广泛渗透的条件下&#xff0c;个人网盘市场也得到了长足发展。而在5G和AI的加持下&#xff0c;个人网盘不断进行技术融合和迭代&#xff0c;云盘已然成为互联网用户以及智能设备存储的基本服务&#xff0c;而其应用场景也顺理成章地开始向各个细分…

window11 node.js 安装与下载

最近电脑莫名其妙的被一些恶意流氓软件捆绑了&#xff0c;今天我直接给恢复出厂设置了。顺便记录一下软件的安装步骤。 1. 先去官网下载 官网地址 ① 进入到官网后如下图所示 ②根据自己电脑选择合适的版本下载&#xff08;我是wiindows 64位 &#xff09; ③ 双击安装包点击…

道路交通警示牌数据集以及训练好的YOLO模型权重文件

道路交通警示牌yolo模型1.交通标志数据集的介绍2.训练出权重文件1.交通标志数据集的介绍 交通标志&#xff08;国外的交通标志&#xff09;数据集是经过标注过的数据集&#xff0c;包括77个类别&#xff1b;标注类别如下&#xff1a; ‘200m’, ‘50-100m’, ‘Ahead-Left’, …

如何写好一份数据分析报告?

数据分析报表怎么做&#xff1f;这是一个很笼统的问题&#xff0c;所以这篇尝试从数据分析报表的3个方面来说下&#xff0c;准备了3天&#xff0c;内容较长&#xff0c;心急的小伙伴先看索引&#xff1a; 数据分析报表的原则数据分析报表的数据来源数据分析报表的可视化展示 0…

【按钮的两种状态 Objective-C语言】

一、继续上一篇文章的按钮案例 1.先说思路: 1)先把最上面的图片按钮实现了 我们拽1个按钮,给它一个背景图,加一个文字“点我啊” 当你鼠标按下去的时候,换成另1个背景图 当你鼠标按下去的时候,按钮的背景图变了,并且上面的文字也变了,变成“摸我干啥” 当你鼠标抬起…

Doris-集成其他系统(四)

目录0、准备1、Spark 读写 Doris1.1 准备 Spark 环境1.2 使用 Spark Doris Connector1.2.1 SQL 方式读写数据1.2.2 DataFrame 方式读写数据&#xff08;batch&#xff09;1.2.3 RDD 方式读取数据1.2.4 配置和字段类型映射1.3 使用 JDBC 的方式&#xff08;不推荐&#xff09;2、…

京东零售大数据云原生架构实践

通常谈到大数据&#xff0c;想到的是大数据平台、Hadoop生态或者数据湖技术&#xff0c;关注于大数据存储、大数据计算方向上的技术发展与应用&#xff1b;谈到云原生&#xff0c;想到的是微服务架构、容器化或者SRE&#xff08;Site Reliability Engineer&#xff09;运维范畴…

圣诞节快乐,程序员们!

一、前言 为了参加圣诞创意大赛&#xff0c;拖着阳过的病体&#xff0c;在咳嗽的间隔时间变长之后&#xff0c;发个帖子沾点节日气氛。前段时间参加了大模型训练营&#xff0c;趁着热度&#xff0c;刷一下AIGC的氛围。 二、创意名 因为生病了&#xff0c;所以就懒&#xff0…

【Pygamre实战】2023人气超高的模拟经营类游戏:梦想小镇代码版火爆全场,免费体验分享下载哦~

前言 梦想还是要有的&#xff0c;万一实现了呢&#xff1f;&#xff01;今天小编就来用代码实现自己专属的城市——特大都市&#xff1a; 梦想小镇启航。顾名思义&#xff0c;梦想小镇是梦想花开之地。自己当市长不香嘛&#xff01; 所有文章完整的素材源码都在&#x1f447;…

Unity3d C#实现类似于王者荣耀技能读条和CD冷却的功能(含源码)

效果 效果如图&#xff0c;主要是释放技能后&#xff0c;有一定的技能的持续时间&#xff08;也可以设置为0&#xff09;&#xff0c;然后技能释放完成后&#xff0c;技能进入了冷却时间的倒计时&#xff0c;技能冷却完成后就可以再次释放。 实现 UI搭建 UI的搭建较为简单就…

react基本使用

react基本使用1.基础知识1.1 React 介绍1.2 React特点声明式UI组件化学习一次&#xff0c;随处使用2.基本使用2.1 React 脚手架&#xff08;CLI&#xff09;使用 React 脚手架创建项目项目目录结构说明和调整2.2 使用React 的基本步骤2.2.1 导入react和react-dom2.2.2 创建reac…

2023风丘内推计划——“你的同事 你来挑”

招 聘 简 章 &#xff08;一&#xff09;企业文化 愿 景&#xff1a;让科技更简单 使 命&#xff1a;为客户创造更多价值&#xff1b;为员工创造更多机会&#xff1b;为社会贡献更多美好&#xff01; 价值观&#xff1a;诚信敬业、持续创新、团队合作、追求卓越、勇担…

Redis高可用之集群架构(第三部分)

引言 集群的实际环境模拟可以参考我之前的文章 单机模拟集群&#xff08;三主两从&#xff09; 一、集群的工作原理 集群中的节点只能使用0号数据库&#xff0c;而单机数据库没有这个限制。集群中的节点本质上就是一个运行在集群模式下的Redis服务器&#xff0c;Redis服务器在…

【endnote学习】为什么引用文献时期刊名没有显示为缩写名形式

为什么引用文献时期刊名没有显示为缩写名形式问题描述问题解决问题描述 在引用文献时&#xff0c;发现有个别文献引用信息中期刊名没有显示为缩写形式。比如(选择显示格式为AIChE): 引用信息里&#xff0c;期刊名“Physical review B”没有自动显示为缩写名。 出现这种情况有…

c++算法基础必刷题目——前缀和与差分

文章目录前缀和与差分算法&#xff1a;1、校门外的树2、值周3、中位数图4、激光炸弹5、二分6、货仓选址前缀和与差分算法&#xff1a; 前缀和与差分算法主要是为了快速求出某个区间的和&#xff0c;例如有一个数组a[10]{0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4…

unity编辑器窗口介绍

Hierarchy 摆放了unity游戏中使用的节点。 Scene 场景编辑视图&#xff0c;经常用到。 栅格 场景编辑视图中&#xff0c;有一些栅格&#xff0c;用下面这个就可以控制是否展示栅格。 天空盒&#xff08;skybox&#xff09; 天空一片蓝色&#xff0c;也是因为初始创建了蓝色的…