兩個回調方法:發送消息成功之后執行事務的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的第二個參數,傳入一個匿名內部類即可。