下午完成了java代码的实现, 源代码亦转移至github了, 地址: https://github.com/xzwdev/stmp.git
这个部分开始描述STMP协议在事务上的处理, 其实这部分与TCAP基本上保持了一致, 只是多了几个事务原语定义, 下面一一道来.
在描述这些事务原语之前, 必需先提一下STID(源事务ID)和DTID(目的事务ID), 所谓源和目的, 只是相对的概念, 只要这个事务ID是本地(自己)生成的, 站在本地的角度,
那它就是一个源事务ID, 否则它就是一个DTID, 有了这两个ID, STMP协议的事务逻辑才得以成立.
1. TRANS_BEGIN(事务开始)
BEGIN用于开始一个事务, 通信双方都可以发起, 它有一个必要的字段, 即STID, 它用于在本地链路上标识一个唯一的事务, 在有些TCAP的实现中, 它可以是1 ~ 4
四个字节, 也就是支持uchar, ushort, uint三种类型的事务ID. 不同的长度决定了并发事务的个数, STMP并没有要求STID的长度或类型, 也就是说, 你可以将它置
成一个字符串, 以类似于HashMap<String, Msg> 这样方式来持有事务, 一个BEGIN总是这样发生:
一个BEGIN发出之后, 在本地即开始了一个事务, 事务不可能无限期持有, 因此, 严谨的代码在这里会开启一个定时器, 超时到来时, 即可将事务异常结束. 从这一点
上来看, 如果你发出一个BEGIN