Rocketmq消费面试总结

1 事务消息

并不是真正意义上分布式事务的实现,确保生产者本地事务完成后,一定会把消息发送到broker节点,至于该消息什么时候消费,生产者无法控制。

适合的业务场景:生产者发送 半消息,发送成功后得到消息的UNIQ_ID作为事务ID,半消息就是broker会将原topic和queueid保存到properties里,然后保存到commitLog中。由于消费者这边订阅的是原topic,所以此时消费者还无法消费该消息。broker会把事务id和消息偏移量待会给生产者。

生产者如果本地事务成功,会再次发消息,消息类型是commit,内容包括之前的偏移量,broker收到后,查找之前的半消息,从中取出来原topic和queueid,进行保存。这样原消费者就能够消费了。

问 : 如果长时间broker收不到commit消息怎么办。

broker有定时任务,会调用接口查询事务执行情况,如果回查成功还是会将半消息提交

posted on 2021-09-12 21:25  MaXianZhe  阅读(105)  评论(0编辑  收藏  举报

导航