# 第16节:使用MQ解耦抽奖发货流程

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!

  • 分支:211030_xfg_AsyncDistributionAward (opens new window)
  • 描述:使用MQ消息的特性,把用户抽奖到发货到流程进行解耦。这个过程中包括了消息的发送、库表中状态的更新、消息的接收消费、发奖状态的处理等。

# 零、优秀作业

# 一、开发日志

  • 在数据库表 user_strategy_export 添加字段 mq_state 这个字段用于发送 MQ 成功更新库表状态,如果 MQ 消息发送失败则需要通过定时任务补偿 MQ 消息。PS:你可以使用本章节分支下的 sql 更新自己的库表。
  • 启动 kafka 新增 topic:lottery_invoice 用于发货单消息,当抽奖完成后则发送一个发货单,再异步处理发货流程,这个部分就是MQ的解耦流程使用。
  • ActivityProcessImpl#doDrawProcess 活动抽奖流程编排中补全用户抽奖后,发送MQ触达异步奖品发送的流程。

# 二、创建主题(Topic)

在开发前我们先启动 Kafka 并新增加一个 MQ 的 Topic,命令语句如下:

启动zk:bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
启动kafka:bin/kafka-server-start.sh -daemon config/server.properties
创建topic:bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic lottery_invoice
1
2
3