RocketMQ - 如果优惠券系统的数据库宕机,如何用死信队列解决这种异常场景?

当优惠券系统数据库宕机时,文章探讨了如何利用RocketMQ的消费重试机制和死信队列来解决异常场景。在数据库不可用时,不应返回CONSUME_SUCCESS,而应返回RECONSUME_LATER,让RocketMQ将消息放入重试队列。若16次重试后仍无法处理,消息会被转移到死信队列。死信队列的处理方式可根据具体业务需求定制,如设置后台线程持续重试或进行其他操作。
摘要由CSDN通过智能技术生成

1. 如果优惠券系统的数据库宕机,会怎么样?

假设我们的MQ使用都没有问题,但是如果我们的优惠券系统的数据库宕机了呢?因为我们一直都是假设了一个场景,就是订单支付成功之后会推消息到MQ,然后优惠券系统、红包系统会从MQ里获取消息去执行后续的处理,比如发红包或者发优惠券。

那么如果这个时候,优惠券系统的数据库宕机了,就必然会导致我们从MQ里获取到消息之后是没办法进行处理的。

所以针对这样的一个坑爹的异常场景,我们应该怎么处理?优惠券系统应该怎么对消息进行重试?重试多少次才行?万一重复重试都没法成功,这时候消息应该放哪儿?

2. 数据库宕机的时候,你还可以返回CONSUME_SUCCESS吗?

在下面代码片段中,可以清晰的看到,我们注册了一个监听器回调函数,当consumer获取到消息之后,就交个我们的函数来处理

consumer.registerMessageListener(
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无法无天过路客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值