个人知乎 ##基础六/功能六-异步队列实现赞踩站内信

个人知乎

基础六/功能六-异步队列实现赞踩站内信

基本概念

同步业务
    request->controller->service
    立即执行
异步业务
    service不立即处理,仅把它置入待处理事件缓冲池
    比如:点赞同时异步发送站内信
事件缓冲池
    单向队列/优先队列

结构

package:async
EventType
    记录事件的类型
EventModel
    具体事件的内存模型
    事件类型,触发者,时间,接收者等...
EventProducer
    @Service,事件入队服务
    fireEvent(EventModel)
    利用jedis.list+对象序列化实现List<JSON(EventModel)>
EventHandler
    所有Handler接口
    doHandle:
        具体handler的不同处理
    List<EventType> getSupportEventTypes()
        注册handler所关心的事件类型,通过Handler查type
EventConsumer
    分发Event给Handler
    利用applicationContext自动构造出所有Type,List
    并启动线程
    Map<EventType,List<EvenHandler> >config
        记录某种类型需要经历的多个Handler,通过type反查
        Handler
    Thread
        一个不断从jedis中取JSON并反序列化成EventModel的线程
        并将该事件分发个对应的EventHandler
具体Handler
    实现EventHandler接口
    处理可以异步的业务

例子

在controller调用Service的同时,将一个异步事件加入到队列
举一反三
    网络编程事件包分发给不同的handler    
jnu_forum是基于Java的论坛系统。前端使用Html+CSS+JS实现,后端使用Java语言开发,技术栈包括但不限于Spring/SpringMVC/SpringBoot、MyBatis、Redis、PageHelper、MySQL、Maven等,开发工具为Eclipse。 功能 1、登录和注册 2、(分类)浏览话题 3、发表话题 4、上传照片 5、评论以及评论 6、站内信 7、用户积分排行榜 8、关注和共同关注 主要功能实现 1、登录注册:使用SpringSecurity4框架,即使用已经包装好的接口来实现,简单易用。 2、上传照片:照片是存储在第三方服务器,即七牛云。 3、站内信:通过异步队列实现站内信,其中选择Redis来作为队列。 4、排行榜:排行榜是通过Redis的有序集合来实现的,可以快速实现topK排序。 5、关注和共同关注:通过Redis的集合数据结构实现。 页面展示 1、首页 2、注册 3、登录 4、话题浏览页面 5、话题详情页面与评论 6、个人简介页面 7、发表话题页面 8、站内信页面 9、照片墙页面 10、关注和粉丝界面 10、排行榜界面 备注: 1、本项目的Redis已经换成集群了,本地跑的时候先建立集群,否则自行将集群换成单机Redis,具体修改application.propertie和com.xzp.forum.util.JedisAdapter.java即可(再具体如何修改可以参考提交记录或联系我~) 2、因项目中七牛云过期了,上传的所有照片都失效了,所以项目中有照片的都被和谐了
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值