RocketMQ高并发创建促销活动流程
2024-05-08 11:21:30 0 举报
RocketMQ高并发创建促销活动流程
作者其他创作
大纲/内容
【促销活动创建】监听器处理消息逻辑
消息中携带哪些数据?这里消息体传输的数据为新创建的一个事件实体类,里边包含了促销活动的信息@Datapublic class SalesPromotionCreatedEvent { // 促销活动实体类 private SalesPromotionDO salesPromotion;}
RcoketMQ
监听【促销活动创建】事件
定义每个分片数量为 1000 个
拿到消息中传递的促销活动实体
用户1001
通过 Redis 判断发布的活动是否重复
用户2000
分片1
监听到消息,将 startUserId - endUserId 范围内的用户信息查询出来,遍历用户信息进行第三方平台推送
发布促销活动
用户1:第三方平台推送所需信息
分片+多线程推送
用户1003
线程池
如何合并保证大小不超过1MB
...
查询用户总数
分片2
key 的设计:前缀promotion_Concurrency+活动名+创建者+开始时间+截止时间value:UUID过期时间:30 分钟
消费者监听
线程池的设置
用户1000
Message...
监听到【创建促销活动】事件
发布【促销活动创建】事件
用户1
将促销活动落库
MQ
并发推送
Topic:sales_promotion_created_event_topic
用户2
用户3
分片...
根据 key 查看是否获取到valuekey 的设计:前缀promotion_Concurrency+活动名+创建者+开始时间+截止时间
用户
推送
Message2
发布事件
用户1002
startUserId - endUserId
合并多个分片为一个推送消息,可以减少推送的次数RocketMQ 官方建议消息不超过 1MB,
将发布的活动在 Redis 中保存
Message3
将 MQ 推送消息的任务提交到线程池,加快推送速度
用户2:第三方平台推送所需信息
将多个分片合并成为一条消息
对所有用户开始推送促销活动【多线程+分片推送】
消息
监听到消息,调用第三方平台 API 逐个推送消息
Message1
0 条评论
下一页