1212122
2021-11-19 20:31:51 3 举报
登录查看完整内容
为你推荐
查看更多
抱歉,暂无相关内容
dsds
作者其他创作
大纲/内容
postHandle:在方法调用之后执行
用户注册
Redis
首先我们需要SpringBoot中定义一个yml文件里面有一些属性:服务器ip和端口号生产者组名消费者组名异步消息投递次数自定义主题超时时间数据失败重试时间
商品模块
RocketMQ消息中间件
订单模块
痛点
秒杀(促销)模块
该实体类中有两个方法:1.recordLogs():记录消息发送日志保证rocketMQ消息发送的高可用2.sendMessage()消息发送功能实体(异步发送)MsgMQ消息实体,以及MailSendlogs消息日志
首先前端发起登录请求,并让用户输入用户名和密码以及验证码,从请求体里获得请求参数1.首先我们对于验证码进行验证2.首先我们对于密码和用户名进行一个简单验证,验证格式合不合格,后来我们根据用户名和密码对于数据库进行一个一个查询,这时查询到的集合为空,则返回给用户,用户名或密码错误3.找到了数据,则将用户头像信息,以及用户名和userid通过JWT转化存进浏览器的Cookie当中。
所涉及到技术
物流模块
1.定义一个TokenIntrceptor继承HandlerInterceptorAdapter
将一个类写一个注解定义定时任务,并从数据库找状态码为0消息投递中的邮件信息,并从集合中判断次数大于=3次的,则直接返回 并在数据库中记录为消息发送失败,帮将信息打印在日志,并重新写程序自己处理其他的重新发送邮件,并更新数据库中的次数
afterCompletion;请求处理完了还可以执行的方法
RocketMQ
发送异步消息,以及定时任务给用户发送激活邮件
用户模块
首先我们是微服务框架,微服务框架的本质是有一个个单体应用部署在不同的服务器上,这就会导致,例如购物车模块以及订单模块,都有很强的私密性,都是专职一个用户的,这时候由于HTTP是无状态协议的,进入哪个服务,都不清楚是哪个用户登录,这时候每个模块都需要去验证,用户是否登录,所以这就是用户模块的痛点。
通过对于用户所输入的密码以及密码进行正则校验,不符合的返回相应的结果,成功则发送激活邮件
PipeLine设计模式
通过getMethod
如何解决
消费者
getAnnoation()
用户激活
真正的解决方案:jwt
如何校验用户的身份:从浏览器里面拿cookie进行验证
3.是在判断是否在类上有匿名注解(是不需要要进行验证的)
通过messageid以及mail_send用redis检查幂等性,在sendMessage,并且在SendMessage中消费过的消息用messageID放在redis里
preHandle:在方法调用之前执行
HandlerInterceptor和filter的区别:1.filter是基于回调函数doFilter执行的HandlerInterceptor是基于Spring的AOP以及java的反射机制2.filter依赖于servlet容器,而interceptor与Servlet无关3.filetr的过滤范围比Interceptor范围大,除了过滤请求之外哈可以使用通配符保护页面,图片文件,Interceptor之能过滤请求,只对action起作用4.filter的过滤加载可以通过init方法声明,Interceptor可以访问action上下文,不再action的生命周期中,拦截器可以被多次调用,而过滤器只能在初始化时被调用一次
购物车模块
4.不含有匿名注解的则需要拿到Cookie进行验证,与数据库进行比对,通过了才会放行!
Dubbo与Zookeeper
用户登录
JWT
异常处理机制
2.判断handler方法是否是HandlerMethod即判断是否是动态请求
首先是RecordLogs将邮件发送的日志记录保存在数据库中 ----》这是用来定时任务来探查邮件是否投递成功sendMessage()里首先查看内容是否为空,以及topic是否为空,最后异步发送,asyncSend方法,并由参数 new SendCallback里面两个方法onSuccess 和onExceptiononSuccess用来更新用户的状态,onException是用来消息失败,定义一个定时器去发送信息的
JWT与HandlerInterceptor
解决的是消息幂等性
项目三模块
让用户仅仅登录一次就能在其他模块模块中不用反复登录!
SpringBoot整合JavaMail实现了邮件发送功能,并且一开始,需要激活的时候,有激活邮件发送不出去的情况,这时候我们的解决方式,是使用的RocketMQ去异步发送激活邮件,并发送回去了会有
0 条评论
回复 删除
下一页