需求描述
在博客项目中,有个功能叫关注博主,用户关注博主后,博主收到用户关注的通知,而用户可以在博主发布文章的第一时间订阅文章。
需求分析
从上面的描述中可以知道,这个功能设计到两个主体,用户和博主。
用户关注博主之后会干两件事:
1、关联用户与博主
2、发送关注通知给博主
而博主发布文章之后也会有两件事:
1、发布文章到自己的栏目
2、通知所有的订阅用户
设计难点
这个功能的实现难点其实不多,就是一个发布订阅事件,注意一下用户与博主的关联。因为如果关注的用户太多,同步处理发布文章与通知用户的逻辑的话,会比较耗时,因此可以使用消息队列来处理。
技术选型
1、发布订阅可以使用消息队列来做到,比如各种mq;(分布式建议使用)
2、redis也有发布订阅的功能。(分布式建议使用)
3、如果只是简单的单机运用,没有涉及到很高的并发的话可以使用spring的事件模型ApplicationEvent。
4、Guava的EventBus事件总线
逻辑整理
这里使用一种简单的单机实现Spring的事件模型ApplicationEvent。
第一步、分别自定义订阅和通知事件,继承ApplicationEvent
第二步、分别定义事件监听器,实现ApplicationListener
第三步、使用容器发布事件(订阅事件、通知事件)
代码实现
比如说有人喜欢博主的文章的通知事件
第一、定义通知事件
第二步、实现ApplicationListener,重写onApplicationEvent,对事件内容进行对对应的业务逻辑处理,并把事件的结果保存到数据库中。代码中的send(Event)方法就是做保存的方法。
第三步、使用ApplicationContext容器发布事件。
领取专属 10元无门槛券
私享最新 技术干货