一、运行Nacos注册中心
1、Nacos下载和安装
下载地址: https://github.com/alibaba/nacos/releases
https://github.com/alibaba/nacos/releases
2、Windows启动Nacos
参考:https://github.com/alibaba/nacos
https://github.com/alibaba/nacos
解压:将下载的压缩包解压
启动:startup.cmd -m standalone
3、访问
http://localhost:8848/nacos
用户名密码:nacos/nacos
二、服务发现
1、引入依赖
service-base模块中配置Nacos客户端依赖
代码语言:javascript复制<!--服务发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2、添加服务配置信息
在需要注册到注册中心的微服务放入配置文件中添加配置
代码语言:javascript复制#spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848 # nacos服务地址
每个服务模块都要配置
3、启动微服务
启动已注册的微服务,查看 “服务管理 => 服务列表”,可就以看到已注册的微服务
需求
发送短信时校验手机号是否注册
一、校验手机号是否注册
1、UserInfoController
service-core中添加controller方法:将网络图片保存到OSS服务器中
代码语言:javascript复制@ApiOperation("校验手机号是否注册")
@GetMapping("/checkMobile/{mobile}")
public boolean checkMobile(@PathVariable String mobile){
return userInfoService.checkMobile(mobile);
}
2、UserInfoService
接口:
代码语言:javascript复制boolean checkMobile(String mobile);
实现:
代码语言:javascript复制@Override
public boolean checkMobile(String mobile) {
QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("mobile", mobile);
Integer count = baseMapper.selectCount(queryWrapper);
return count > 0;
}
三、接口的远程调用
service-sms中添加远程调用
1、CoreUserInfoClient
接口:
代码语言:javascript复制@FeignClient(value = "service-core")
public interface CoreUserInfoClient {
@GetMapping("/api/core/userInfo/checkMobile/{mobile}")
boolean checkMobile(@PathVariable String mobile);
}
2、ApiSmsController
引入client
代码语言:javascript复制@Resource
private CoreUserInfoClient coreUserInfoClient;
在获取验证码方法中调用远程方法校验手机号是否存在
代码语言:javascript复制//手机号是否注册
boolean result = coreUserInfoClient.checkMobile(mobile);
System.out.println("result = " result);
Assert.isTrue(result == false, ResponseEnum.MOBILE_EXIST_ERROR);
//生成验证码
.....
四、超时控制
openfeign默认的连接超时时间为1秒,测试时很可能会出现远程调用超时错误。
可以在配置文件中添加如下配置:
代码语言:javascript复制feign:
client:
config:
default:
connectTimeout: 10000 #连接超时配置
readTimeout: 600000 #执行超时配置