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

来源:互联网 发布:各国域名后缀 编辑:程序博客网 时间:2024/05/01 11:43

个人知乎

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

基本概念

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

结构

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

例子

在controller调用Service的同时,将一个异步事件加入到队列举一反三    网络编程事件包分发给不同的handler