当前位置: 首页 > news >正文

尚融宝——整合OpenFeign与Sentinel实现兜底方法——验证手机号码是否注册功能

一、整合过程

在项目添加依赖:添加位置

        <!--服务调用--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>

在需要的服务中添加启动注解:

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
//@MapperScan("com.atguigu.srb.core.mapper")
@ComponentScan({"com.atguigu.common","com.atguigu.srb.sms","com.atguigu.srb.base"})
@EnableDiscoveryClient
@EnableFeignClients //服务远程调用
public class ServiceSmsApplication {public static void main(String[] args) {SpringApplication.run(ServiceSmsApplication.class,args);}
}

并且在该服务创建远程调用接口:

@FeignClient(value = "service-core") //调用的远程服务名
@RequestMapping("/api/core/userInfo")  //该请求路径必须与需要远程调用方法的请求路径一致
public interface CoreUserInfoClient {@GetMapping("isMobileExist/{mobile}")public boolean isMobileExist(@PathVariable String mobile);
}

 对比图:

 在service-core服务中实现被调用的远程方法:

 service层:

/*** <p>* 用户基本信息 服务类* </p>** @author Helen* @since 2023-04-06*/
public interface UserInfoService extends IService<UserInfo> {void register(RegisterVO registerVO);UserInfoVO login(LoginVO loginVO, String ip);boolean isMobileExist(String mobile);
}

 serviceImpl层:

/*** <p>* 用户基本信息 服务实现类* </p>** @author Helen* @since 2023-04-06*/
@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {@AutowiredRedisTemplate redisTemplate;@AutowiredUserAccountMapper userAccountMapper;@AutowiredUserLoginRecordMapper userLoginRecordMapper;@Overridepublic boolean isMobileExist(String mobile) {QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();queryWrapper.eq("mobile", mobile);Integer integer = baseMapper.selectCount(queryWrapper);if(integer > 0){return true;}return false;}
}

 在service-sms服务中使用远程方法:

@RestController
@RequestMapping("/api/sms")
@CrossOrigin
public class ApiSmsController {@AutowiredSmsService smsService;@AutowiredCoreUserInfoClient coreUserInfoClient;@GetMapping("sendCode/{mobile}")public R sendCode(@PathVariable String mobile){// 先检查手机号是否被注册过// 调用的是远程serviceImpl的isMobileExist的方法boolean mobileExist = coreUserInfoClient.isMobileExist(mobile);// 如果不为false,MOBILE_EXIST_ERROR(207, "手机号已被注册")Assert.isTrue(!mobileExist, ResponseEnum.MOBILE_EXIST_ERROR);smsService.sendCode(mobile);return R.ok();}
}

二、OpenFiegn整合Sentinel实现兜底方法

在guigu-common微服务添加依赖:

        <!--服务容错--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>

在service-sms微服务

添加sentinel配置:

spring:profiles:active: dev # 环境设置application:name: service-sms # 服务名cloud:nacos:discovery:server-addr: 127.0.0.1:8848# sentinelsentinel:transport:dashboard: localhost:8080port: 8719

 开启被动降级:

feign:client:config:default:connect-timeout: 600000read-timeout: 600000sentinel:enabled: true  # OpenFeign整合sentinel,启动被动降级

 开启兜底方案fallback

@FeignClient(value = "service-core",fallback = CoreUserInfoClientFallback.class) //调用的远程服务名,fallback是兜底方案
//@RequestMapping("/api/core/userInfo") 不能放这,会报重复出现的异常
public interface CoreUserInfoClient {//该请求路径必须与需要远程调用方法的请求路径一致@GetMapping("/api/core/userInfo/isMobileExist/{mobile}")public boolean isMobileExist(@PathVariable String mobile);
}

实现兜底方法:

@Component
public class CoreUserInfoClientFallback implements CoreUserInfoClient{@Overridepublic boolean isMobileExist(String mobile) {System.out.println("兜底函数,默认返回手机号已经被注册过");return true;}
}

相关文章:

尚融宝——整合OpenFeign与Sentinel实现兜底方法——验证手机号码是否注册功能

一、整合过程 在项目添加依赖&#xff1a;添加位置 <!--服务调用--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency> 在需要的服务中添加启动注…...

几种常见的激活函数

文章目录 常见的激活函数介绍Sigmoid函数ReLU函数LeakyReLU函数Tanh函数Softmax函数总结 常见的激活函数介绍 激活函数是神经网络中的重要组成部分&#xff0c;它决定了神经元的输出。在神经网络的前向传播中&#xff0c;输入数据被传递给神经元&#xff0c;经过加权和和激活函…...

MySQL-数据库,数据表的基本操作

数据库&#xff0c;数据表的基本操作 1 数据库的基本操作1.1 创建数据库1.2 删除数据库 2 数据表的基本操作2.1 创建数据表2.1.1 主键约束2.1.2 外键约束2.1.3 非空约束2.1.4 唯一性约束2.1.5 默认约束2.1.6 自增列 2.2 查看数据表结构2.2.1 查看表基本结构语句DESC2.2.2 查看表…...

IC-14W网络IC卡读写器_银河麒麟桌面操作系统V10适配测试报告

银河麒麟操作系统产品NeoCertify 认证测试报告 系统版本&#xff1a;银河麒麟桌面操作系统V10 厂商名称&#xff1a; 广州荣士电子有限公司 认证产品&#xff1a;IC-14W网络IC卡读写器 测试日期&#xff1a; 2022-11-04 …...

面试常见问题

1.自我介绍 面试官您好&#xff0c;我叫**&#xff0c;在招聘网站上看到了公司的介绍和岗位要求&#xff0c;觉得非常有吸引力&#xff0c;结合自己的过往经历&#xff0c;也感觉自己能够胜任&#xff0c;所以很高兴能有这次面试机会。 参与工作已经5年了&#xff0c;18年毕业于…...

matlab数据归一化与反归一化处理

假如数据实际取值范围为 X i ∈ [ − π π ] , i 1 , 2 , 3 X_i \in [-\pi \ \ \pi], i1,2,3 Xi​∈[−π π],i1,2,3&#xff0c;变量服从正态分布 示例如下&#xff1a; %% 数据归一化处理及其概率密度函数 clear clc Mu [0 0 0]; % 均值 Sigma [1 1 1]; % 标准差 C…...

【杂凑算法篇】密码杂凑算法的安全强度

【杂凑算法篇】密码杂凑算法的安全强度 杂凑&#xff08;哈希&#xff09;算法安全强度—【蘇小沐】 文章目录 【杂凑算法篇】密码杂凑算法的安全强度&#xff08;一&#xff09;安全强度&#xff08;Security Strength)&#xff08;二&#xff09;杂凑算法的安全强度与对比总…...

【RobotFramework自动化测试】

robotframework介绍 RF是一个基于Python语言开发的&#xff0c;可扩展的&#xff0c;是以关键字驱动模式的自动化测试框架。RF最新的版本是2019 年7月份发布&#xff0c;7月份之前只支持python2.7&#xff0c;7月之后支持3.X的版本 robotframework的安装 安装python环境&…...

操作系统原理 —— 什么是中断?(四)

我们先来看看早期的计算机的工作流程&#xff1a; 如上图&#xff0c;在早期的计算机假设有三个程序需要执行&#xff0c;执行顺序是&#xff1a;先执行程序1&#xff0c;等待程序1结束之后&#xff0c;再开始执行程序2&#xff0c;以此类推&#xff0c;所以它们是串行执行的…...

SA168 3BSE003389R1

SA168 3BSE003389R1 远程终端控制系统&#xff08;RTU&#xff09;可连接到其他设备。RTU可将设备上的电气信号转换为数字的值&#xff0c;例如一个开关或阀开/关的状态&#xff0c;或是仪器量测到的压力、流量、电压或电流。也可以借由信号转换及传送信号来控制设备&#xff0…...

基于Java+Springboot+Vue+elememt美食论坛平台设计实现

基于JavaSpringbootVueelememt美食论坛平台设计实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文…...

Go Etcd

基本操作 go get go.etcd.io/etcd/client/v3# 此处使用的 版本是&#xff1a; # go.etcd.io/etcd/client/v3 v3.5.8这里使用的是 "go.etcd.io/etcd/client/v3" 而不是 "go.etcd.io/etcd/clientv3" 我们不使用 etcd/clientv3&#xff0c;因为它与grpc 最新…...

01、Cadence使用记录之新建工程与基础操作(原理图绘制:OrCAD Capture CIS)

01、Cadence使用记录之新建工程与基础操作&#xff08;原理图绘制&#xff1a;OrCAD Capture CIS&#xff09; 硕士学电磁场去了&#xff0c;写点博客记录下学习过程。 参考的教程是B站的视频&#xff1a;allegro软件入门视频教程全集100讲 本科的时候就对Cadence有所耳闻&am…...

Redis数据结构与对象-链表和字典

1、链表 其实个人感觉redis的链表内容和其他的差不多。就是一个listNode结构&#xff0c;里面又指向前置节点和后置节点的指针。 然后redis链表可以保存各种不同类型的值。 链表被广泛用于实现redis的各种功能&#xff0c;比如列表键、发布与订阅、慢查询、监视器等。 2、字典…...

学系统集成项目管理工程师(中项)系列08a_合同管理(上)

1. 合同&#xff08;Contract&#xff09; 1.1. 契约 1.2. 广义概念 1.2.1. 以确定各种权利与义务为内容的协议&#xff0c;即只要是当事人之间达成的确定权利义务的协议均为合同&#xff0c;不管它涉及哪个法律部门及何种法律关系 1.2.2. 合同除应包括民法中的合同外&…...

【Linux 裸机篇(四)】I.MX6ULL C语言 LED 驱动

文章目录 一、汇编搭建 C 语言环境二、C 语言编写三、编写 Makefile四、链接脚本 一、汇编搭建 C 语言环境 实际工作中是很少用到汇编去写嵌入式驱动的&#xff0c;大部分情况下都是使用 C 语言去编写的。只是在开始部分用汇编来初始化一下 C 语言环境&#xff0c;比如初始化 D…...

我也曾经因安装库而抓狂,直到我遇到了

入门教程、案例源码、学习资料、读者群 请访问&#xff1a; python666.cn 大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 几乎所有的 Python 学习者都遇到过“安装”方面的问题。这些安装问题包括 Python 自身环境的安装、第三方模块的安装、不同版本的切换&…...

DDPG算法详解

DQN算法详解 一.概述 概括来说&#xff0c;RL要解决的问题是&#xff1a;让agent学习在一个环境中的如何行为动作(act)&#xff0c; 从而获得最大的奖励值总和(total reward)。 这个奖励值一般与agent定义的任务目标关联。 agent需要的主要学习内容&#xff1a;第一是行为策略…...

继续学c++

由于c里面有很多和c语言很像的东西&#xff0c;这里就来总结一点不像的或者要注意的&#xff0c;或者是我已经快忘记的&#xff1b; 先来一个浮点型也就是实型类型的总结&#xff1b; 知道浮点型有这两个类型&#xff1a;float和double型&#xff1b; 然后float型占四个字节…...

Day949.遗留系统之殇:为什么要对遗留系统进行现代化? -遗留系统现代化实战

遗留系统之殇&#xff1a;为什么要对遗留系统进行现代化&#xff1f; Hi&#xff0c;我是阿昌&#xff0c;今天学习记录是关于遗留系统之殇&#xff1a;为什么要对遗留系统进行现代化&#xff1f;的内容。 不知道你是否跟曾经一样&#xff0c;身处一个遗留系统的漩涡之中&…...

从零到一:在个人PC上部署并集成ChatGLM-6B到Unity应用

1. 环境准备与模型下载 在个人PC上部署ChatGLM-6B需要先搞定三件事&#xff1a;硬件检查、软件环境搭建和模型文件获取。我的老款游戏本&#xff08;i7-9750H RTX2060 6GB显存&#xff09;实测可以流畅运行&#xff0c;关键在于正确的量化配置。 硬件检查要点&#xff1a; 显存…...

Ix开源平台:基于Kubernetes的私有云与家庭实验室一体化管理方案

1. 项目概述与核心价值最近在折腾一个叫Ix的开源项目&#xff0c;它来自ix-infrastructure这个组织。乍一看这个名字&#xff0c;你可能觉得有点抽象&#xff0c;但如果你对自托管、家庭实验室、私有云或者想找一个更现代、更易用的 TrueNAS 替代品感兴趣&#xff0c;那这个项目…...

YimMenu:GTA V终极游戏增强工具完整实战手册

YimMenu&#xff1a;GTA V终极游戏增强工具完整实战手册 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...

Wand-Enhancer:免费解锁WeMod专业版功能的终极本地增强工具

Wand-Enhancer&#xff1a;免费解锁WeMod专业版功能的终极本地增强工具 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的高昂订阅费用…...

Sketchfab数据提取终极指南:打破在线3D模型下载壁垒的完整解决方案

Sketchfab数据提取终极指南&#xff1a;打破在线3D模型下载壁垒的完整解决方案 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 你是否曾在Sketchfab上发现完美的3D…...

Python自动化Excel数据抓取:OpenClaw技能实战指南

1. 项目概述&#xff1a;从Excel表格到智能数据抓取如果你每天的工作都离不开Excel&#xff0c;并且经常需要从各种网页、文档甚至PDF里手动复制粘贴数据&#xff0c;然后费劲地整理到表格里&#xff0c;那你一定对“Excel大师”这个称号既向往又头疼。我们总希望Excel能更“聪…...

gnamiblast-skill:基于技能化与管道化的智能文本处理工具解析

1. 项目概述与核心价值最近在GitHub上闲逛&#xff0c;又发现了一个挺有意思的项目&#xff0c;叫gabrivardqc123/gnamiblast-skill。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;gnamiblast听起来像是个自造词&#xff0c;skill又指向了某种技能或功能。作为一名常…...

基于Go的轻量级自托管IM系统OpenWhisp部署与架构解析

1. 项目概述&#xff1a;一个开源的即时通讯解决方案最近在折腾一个内部协作工具&#xff0c;需要集成一个轻量级的即时通讯模块。市面上成熟的方案不少&#xff0c;但要么是SaaS服务&#xff0c;数据不在自己手里&#xff0c;心里不踏实&#xff1b;要么是像Rocket.Chat、Matt…...

【最新 v2.7.1 版本安装包】5 分钟搞定 OpenClaw,零基础无需命令一键部署保姆级教学

OpenClaw&#xff08;小龙虾&#xff09;Windows 一键部署保姆级教程 | 10 分钟搭建专属数字员工【点击下载最新OpenClaw安装包】 前言 2026 年开源圈热门 AI 智能体 OpenClaw&#xff08;昵称小龙虾&#xff09;&#xff0c;GitHub 星标突破 28 万&#xff0c;凭借本地运行 …...

基于vLLM与OpenAI API的LLM生产部署框架实战指南

1. 项目概述&#xff1a;一个面向生产环境的LLM部署框架最近在折腾大语言模型&#xff08;LLM&#xff09;的部署&#xff0c;发现了一个挺有意思的项目&#xff1a;run-llama/llama_deploy。这名字乍一看&#xff0c;可能会让人以为它只是用来部署Meta的Llama系列模型的&#…...