WVP学习-二、入口以及redis消息通知
启动入口
查看wvp源码发现启动代码如下
这里可以看到wvp默认启动只是作为一个java普通应用在启动,启动后再在代码里面重新使用了springboot方式来启动,开始一直不明白这样做有什么意义,后来想了下估计是为了后面代码中有遇到问题后重启方便,因为可以看到main方法后面跟了一个restart方法,根据此来猜测的。
那么启动后代码下一步去了哪里,或者按什么顺序执行呢?按照正常的执行流程下一步应该是根据配置初始化容器相关的参数,建立连接redis,数据库之类的
注意到代码中存在很多@Order语句,大概猜测到执行顺序,实际的运行也是跟猜测的一样,如果按照这个order顺序一步步来,可以在其中打上断点验证,走到某一步时就会卡在断点这里无法到达下一步。那就按照order来查看启动后都做了什么吧。
来看看order=1的配置是什么
第一步做的就是配置redis,通过代码发现主要就干了一件事,给redis添加消息监听。
消息监听是redis2.8之后才有的功能,通过订阅消息事件在消息过期或者删除等操作时通知订阅方,以便订阅方开展下一步业务,该功能极大的方便了开发人员对事件的把控,以前比如消息过期通过消息队列来实现该功能,比如rabbitmq的死信队列或者插件,rocketmq的延迟功能,现在即使不需要专门的消息队列也可以完成该功能.具体消息理解可以参看这篇博客 redis消息通知
当然支持消息事件通知需要满足两个条件:
- redis版本大于2.8。0
- redis需要主动开启事件支持
开启方式需要将如下箭头所示语句加入到redis.conf中,红色方框中描述了配置方式
一般使用Ex或者AKE即可,Ex代表过期,AKE代表所有事件,配置好后重启redis后验证下是否成功。
可以模仿wvp的写法测试一个带过期时间的key事件消息,这里就不做测试了,只理解源码,可以看到源码中对很多消息做了监听,每个通道处理不同的业务。order为1的就这些代码逻辑,还是比较少的。
发表回复
要发表评论,您必须先登录。