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

本文介绍了一种异步队列的实现方式,用于处理如点赞时的站内信发送等可异步化的业务流程。文章详细阐述了异步队列的基础组件,包括事件类型、事件模型、事件生产者和服务消费者等,并提供了具体的实现思路和技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

个人知乎

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

基本概念

同步业务
    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    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值