# 《Seckill秒杀系统》第41章:秒杀订单监听领域事件的设计与实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/13n7Lg0DQ (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★★☆☆
  • 本章重点:介绍秒杀订单监听领域事件的设计与实现,重点掌握在DDD领域架构模式下,采用Cola框架监听秒杀订单事件的方法,并能够灵活运用到自身实际项目中。
  • 课程视频:https://t.zsxq.com/13n7Lg0DQ (opens new window)

大家好,我是冰河~~

用户成功抢购下单后,往往会为用户推送下单成功的消息、发送优惠券、发送积分,实时统计秒杀数据等等。在实际场景下,消息系统、优惠券系统、积分系统和数据分析统计系统都是独立的系统,此时考虑到系统解耦性能问题,又不能直接在下单的业务方法中调用消息系统、优惠券系统、积分系统和数据分析统计系统的接口。

# 一、前言

在秒杀系统中,用户成功抢购到商品并完成下单操作后,对于用户来说,已经参与并完成了一次秒杀抢购活动。但是,对于秒杀系统来说,在用户完成下单操作后,可能并不是最终的业务状态。往往还会为用户推送下单成功的消息、发送优惠券、发送积分,实时统计秒杀数据等等。在实际场景下,消息系统、优惠券系统、积分系统和数据分析统计系统都是独立的系统,此时考虑到系统解耦性能问题,又不能直接在下单的业务方法中调用消息系统、优惠券系统、积分系统和数据分析统计系统的接口。

# 二、本章诉求

在用户成功完成抢购下单的操作后,领域层对外发布一个用户成功下单的领域事件,由应用层监听对应的事件,在监听到的事件中,在异步处理其他的业务逻辑。本章,就对监听秒杀订单领域事件的逻辑进行设计和实现。

# 三、流程设计

本节,从监听领域事件的流程和类结构两个方面来对监听订单领域事件的流程进行简单的设计。

# 3.1 监听流程设计

在秒杀系统中,针对秒杀系统中针对秒杀订单,监听领域事件的流程如图41-1所示。


可以看到,领域层将事件封装成对应的事件模型发布到Cola,应用层会监听Cola中的事件,并且接收对应的事件,接收到事件后会进行诸如异步发送消息、异步发送优惠券、异步发送积分和异步统计数据等等的操作。

# 3.2 类结构设计

在秒杀系统中,监听订单领域事件涉及到的类结构如图41-2所示。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码