求教在java中使用高并发执行XA事务的xid一些问题?

实现xid接口后,xid的构造方法为public MyXid(int formatId, byte gtrid[], byte bqual[])。

这三个参数中,formatId无需变化,gtrid和bqual需要全局唯一。

尝试在生成xid的时候,尝试随机数的形式,即

n = r01.nextIntI(999999999);

m = r02.nextIntI(999999999);

mysqlXid = new MyXid(0,new byte[(byte)m*01],new byte[(byte)n*01])

暂时不考虑在高并发状态下随机数出现重复问题。几率很低。

但因为两个参数为byte,则在高并发执行状态下,将int强转到byte只有-128到127.

所以很容易重复,则报错xid already exists。

在跑一段时间就会出现全局事务状态active。我的理解是之前的事务因xid存在未释放,导致一直active。

感觉自己对这方面理解可能存在偏差和误区,求大家指点,谢谢。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!