MQ使用场景
2024-04-17 12:28:59 7 举报
MQ使用场景,包括生产者、消费者。以生成订单为例,生产者保证消息不丢失;消费者保证重复消费问题。
作者其他创作
大纲/内容
此处的补偿,可以根据具体场景是否需要,如果生成订单和1/2/3/4 步骤都在一个事务中,当发送消息失败时,回滚数据(包括生成订单),则不需要此补偿。
5.msg写入db,校验幂等(防止重复消费)记录消息
消费者
db
7.处理业务,校验幂等
2.发送消息
处理业务
消费者这边场景可以根据具体业务场景做一些改动,比如可以在业务处理完成后,才返回ACK。等等。
0
兜底定时任务补偿,针对失败的消息重新处理业务
8.业务处理成功,更新db为成功,否则更新失败
4.如果3成功,更新状态为发送成功;如果没有3失败,更新状态为发送失败
兜底定时任务补偿,发送失败的重发
业务生成订单
3.返回ACK(返回ack确保生产者消息不丢失),说明写入成功,更新db
1.msg写入db(确保消息发送失败还有补偿,保证不丢失)状态待发送。
针对生成订单,订单消息写入MQ的场景
6.返回ACK(确保消费者消息不丢失)消费成功
MQ
生产者(msg)
MQ也有可能会出现消息丢失的情况。需要根据不同场景解决。可以先不考虑。
生产者
0 条评论
下一页