• 该注解为分布式事务的切面(AOP point),如果业务方的service服务需要参与分布式事务,则需要加上此注解。

    TxTransactionBootstrap 详解:

    • serializer :事务日志序列化方式,这里我推荐使用是kroy。当然也支持hessian,protostuff,jdk。在我们测试中表现为:kroy>hessian>protostuff>jdk。

    • nettySerializer: 与txManager通信对象的序列化方法,注意与txManager中的序列化方式配置一样。

    • bufferSize: disruptor的bufferSize,当高并发的时候,可以调大。注意是 2n次方。

    • nettyThreadMax : netty客户端工作线程数量。

    • delayTime : 客户端与txmanager通信最大延迟时间。

    • heartTime : 与txmanager保持心跳时间间隔,单位秒。

    • compensation: 是否需要补偿,一般情况下不需要,极端情况下设置为true。

      • recoverDelayTime:事务恢复延迟时间,只有当 compensation:为ture才有用。

      • retryMax : 事务补偿最大重试次数。

    • compensationCacheType:使用何种方式存储日志,支持的有db,redis,mongo,zookeeper等。

    • 如果你采用mongodb存储日志,配置如下(url可以配置成mongdb集群的url)

    1. <property name="txMongoConfig">
    2. <bean class="org.dromara.raincat.common.config.TxMongoConfig">
    3. <property name="mongoDbUrl" value="192.168.1.68:27017"/>
    4. <property name="mongoDbName" value="happylife"/>
    5. <property name="mongoUserName" value="xiaoyu"/>
    6. <property name="mongoUserPwd" value="123456"/>
    7. </bean>
      • redis单节点
    • redis哨兵模式集群:
    1. <property name="compensationCacheType" value="redis"/>
    2. <property name="txRedisConfig">
    3. <property name="masterName" value="aaa"/>
    4. <property name="sentinel" value="true"/>
    5. <property name="sentinelUrl" value="192.168.1.91:26379;192.168.1.92:26379;192.168.1.93:26379"/>
    6. <property name="password" value="123456"/>
    7. </property>
    • redis集群:
    • 如果你采用zookeeper存储日志,配置如下:
    1. <property name="compensationCacheType" value="zookeeper"/>
    2. <property name="txZookeeperConfig">
    3. <bean class="org.dromara.hmily.common.config.TxZookeeperConfig">
    4. <property name="host" value="192.168.1.73:2181"/>
    5. <property name="sessionTimeOut" value="100000"/>
    6. <property name="rootPath" value="/tcc"/>