情况描述

报错如图所示
在这里插入图片描述
在发送消息到MQ,然后消费者收到消息后进行处理时发生了这样的报错。而图中PromotionMqHandler处理的内容就是调用onMsg方法将数据保存到数据库

问题分析

首先我下意识的就认为是不是MQ哪些地方写错了。
但是检查后无果。
于是我查看下面还有一个关于MySQL的报错如图。
在这里插入图片描述
可以发现数据库操作时有一个字段为null,是没有设置默认值导致了报错,于是联想到MySQL操作和RabbitMQ之间的关系,想到了onMsg方法中的调用的checkAndCreateUserCouponNew是开启了事务的,如图在这里插入图片描述
所以原因是消费者在消费消息的时候启用了事务,但是事务失败回滚了,所以导致了MQ的消息消费失败,于是又开始重试。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐