zoukankan      html  css  js  c++  java
  • RocketMQ源码之 事务消息的回调方法应该怎么写?

    两个回调方法:发送消息成功之后执行事务的executeLocalTransaction,回查时候调用的checkLocalTransaction。

    我的思路:执行事务的时候,调用service的方法,这个方法需要用事务注解,方法参数中传入唯一id,事务方法最后判断如果id不为空,说明此时是事务消息在调用,往事务表中插入唯一id,标志事务成功执行。而回查的时候用这个唯一id去事务表中查询。

    问题:

    1、怎样在两个回调方法中获取到这个唯一id?executeLocalTransaction的参数是message和arg,在send方法完成之后,会把send方法中为每一个message生成的唯一id赋值给transactionId,也就是说在executeLocalTransaction方法中是能获取这个id,而checkLocalTransaction方法中的参数MessageExt打印的时候会发现,message的properties中有UNIQ_KEY的值是transactionId,message自己也有transactionId属性,个人建议用properties中的属性。那么现在在checkLocalTransaction中也可以获取这个id了。如果考虑到格式一致的话,也可以用message.putUserProperty自己添加一个uuid来取代这个UNIQ_KEY。

    2、service的方法的调用可以借助sendMessageInTransaction的第二个参数,传入一个匿名内部类即可。

  • 相关阅读:
    八大排序
    链表的合并
    记录B站yxc的背包九讲相关代码
    C++中多态实现
    YOLOV4所用到的一些tricks
    C++中的string 和 stringstream 的知识
    博客园中插入视频
    博客园中插入网页
    面试前必须要知道的【可重入锁 自旋锁】
    面试前必须要知道的【乐观锁 悲观锁】
  • 原文地址:https://www.cnblogs.com/chuliang/p/13433471.html
Copyright © 2011-2022 走看看