请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

没有进入checkLocalTransaction方法

1.在executeLocalTransaction方法里 return RocketMQLocalTransactionState.COMMIT处加了断点,并且已经 taskkill进程了
2.content_center数据库里,share表、rocketmq_transaction_log表都已经有数据了。user_center中是没有的,我重启content_center项目之后,发现并没有进入checkLocalTransaction方法,需要怎么排查一下吗

Spring Boot:2.1.5
Spring Cloud:Greenwich.SR1
Spring Cloud Alibaba : 2.1.4.RELEASE
rocketmq-spring-boot-starter: 2.0.3

正在回答 回答被采纳积分+3

1回答

大目 2022-05-27 12:12:19

我怀疑是你的ide版本问题。我印象中,某些idea在执行到commit那行代码时关闭应用,依然会执行完这个方法。也就是说,半消息直接变全消息投递给消费者了。所以不会进后续的回查方法。

同学可以看看,消费者侧是不是消费了该消息。如果会消费,那么,升级idea,或者执行到commit那行时,人工kill 应用进程即可。

如果消费者侧没有消费,那么可以查询一下半消息是否投递到broker了,如果没有,那就是消息发送有问题。可以开debug日志看下消息发送的细节。

0 回复 有任何疑惑可以回复我~
  • 我发现消费者并没有消费这条消息,怎么查询半消息是否已经投递到broker?
    回复 有任何疑惑可以回复我~ 2022-05-29 20:33:11
  • 大目 回复 提问者 将自己发配于人海 #2
    您好,这个问题我这几天找了很多材料,暂时没有发现有途径查看。。比较尴尬。。
    如果发送的消息不是事务消息,而是普通消息,消费者侧能正常消费吗?
    回复 有任何疑惑可以回复我~ 2022-06-08 00:59:57
  • 提问者 将自己发配于人海 回复 大目 #3
    普通消息消费者是可以正常消费的,就算是事务消息,就算中间没有出现过断点之类的,也是可以正常消费的
    回复 有任何疑惑可以回复我~ 2022-06-09 14:33:55
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信