-
Notifications
You must be signed in to change notification settings - Fork 663
configuration(配置详解)
纳兰丶 edited this page Mar 2, 2018
·
6 revisions
-
application.properties 主要是配置tmManager的http服务端口,redis信息,netty相关信息 注意:因为现在tmManager 是自己向自己注册,所以http端口(server.port)应该要与eureka的端口一致。
server.port=8761 txManager 的http端口 tx.manager.netty.port=9998 对业务方提供的TCP 端口。 tx.manager.netty.serialize=kryo netty 序列化方式,注意应该要与业务方的序列化方式一致。
-
bootstrap.yml 主要是配置eureka的相关属性,比如renew时间,注册地址等
-
部署集群配置: 1.修改application.properties中的 server.port 如: 第一份服务为 server.port=8761 tx.manager.netty.port=9998; 第二份服务为:server.port=8762 tx.manager.netty.port=9999; 2. 修改bootstrap.yml中的eureka:client:serviceUrl:defaultZone:http://localhost:8761/eureka/,http://localhost:8762/eureka/ 再依次启动
@TxTransaction 该注解为分布式事务的切面(AOP point),如果业务方的service服务需要参与分布式事务,则需要加上此注解
<!-- Aspect 切面配置,是否开启AOP切面-->
<aop:aspectj-autoproxy expose-proxy="true"/>
<!--扫描分布式事务的包-->
<context:component-scan base-package="com.raincat.*"/>
<!--启动类属性配置-->
<bean id="txTransactionBootstrap" class="com.raincat.core.bootstrap.TxTransactionBootstrap">
<property name="txManagerUrl" value="http://192.168.1.66:8761"/>
<property name="serializer" value="kryo"/>
<property name="nettySerializer" value="kryo"/>
<property name="blockingQueueType" value="Linked"/>
<property name="compensation" value="true"/>
<property name="compensationCacheType" value="db"/>
<property name="txDbConfig">
<bean class="com.raincat.common.config.TxDbConfig">
<property name="url"
value="jdbc:mysql://192.168.1.78:3306/order?useUnicode=true&characterEncoding=utf8"/>
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="password" value="password"/>
<property name="username" value="xiaoyu"/>
</bean>
</property>
</bean>
<!--这里配置的TxManager http请求的IP:PORT (如果TxManager有改动,这里要跟着改动)-->
<property name="txManagerUrl" value="http://192.168.1.66:8761"/>
<!-- 与txManager通信的序列化方式,spi扩展支持 kroy,hessian protostuff 推荐使用kroy-->
<property name="nettySerializer" value="kryo"/>
<!-- 线程池中的队列类型 spi扩展支持 Linked Array SynchronousQueue-->
<property name="blockingQueueType" value="Linked"/>
<!--线程池中的拒绝策略 spi扩展支持 Abort Blocking CallerRuns Discarded Rejected-->
<property name="rejectPolicy" value="Abort"/>
<!--开启本地补偿(默认开启)-->
<property name="compensation" value="true"/>
<!--本地数据序列化方式 spi扩展支持 java kroy,hessian protostuff 推荐使用kroy-->
<property name="serializer" value="kryo"/>
- 本地数据存储为数据库(数据库支持mysql,oracle ,sqlServer),当业务模块为集群时,推荐使用 会自动创建表,表名称为 tx_transaction_模块名称(applicationName),每个模块配置成一样的补偿方式,如果是用db进行存储,请使用同一个库来存储。
<!--配置补偿类型为db-->
<property name="compensationCacheType" value="db"/>
<property name="txDbConfig">
<bean class="com.raincat.common.config.TxDbConfig">
<!--数据库url-->
<property name="url"
value="jdbc:mysql://192.168.1.78:3306/order?useUnicode=true&characterEncoding=utf8"/>
<!--数据库驱动名称 -->
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="password" value="1234567"/>
<property name="username" value="xiaoyu"/>
</bean>
</property>
- 本地数据存储为redis,当业务模块为集群时,推荐使用。(更多配置请参考 com.happylifeplat.transaction.core.config.TxRedisConfig)
<!--配置补偿类型为reids-->
<property name="compensationCacheType" value="redis"/>
<property name="txRedisConfig">
<bean class="com.raincat.common.config.TxRedisConfig">
<!--redis host-->
<property name="hostName" value="192.168.1.78"/>
<!--redis port-->
<property name="port" value="6379"/>
<!--redis 密码 (有密码就配置,无密码则不需要配置)-->
<property name="password" value=""/>
</bean>
</property>
- 本地数据存储为zookeeper,当业务模块为集群时,推荐使用
<!--配置补偿类型为zookeeper-->
<property name="compensationCacheType" value="zookeeper"/>
<property name="txZookeeperConfig">
<bean class="com.raincat.common.config.TxZookeeperConfig">
<!--zookeeper host:port-->
<property name="host" value="192.168.1.66:2181"/>
<!--zookeeper session过期时间-->
<property name="sessionTimeOut" value="2000"/>
<!--zookeeper 根节点路径-->
<property name="rootPath" value="/tx"/>
</bean>
</property>
- 本地数据存储为mongodb,当业务模块为单节点时,可以使用。会自动创建集合,集合名称为 tx_transaction_模块名称(applicationName) 这里mongdb连接方式采用3.4.0版本推荐使用的Sha1,不是CR模式,同时mongdb应该开启权限认证,使用者需要注意
<!--配置补偿类型为mongodb-->
<property name="compensationCacheType" value="mongodb"/>
<property name="txMongoConfig">
<bean class="com.raincat.common.config.TxMongoConfig">
<!--mongodb url-->
<property name="mongoDbUrl" value="192.168.1.78:27017"/>
<!--mongodb 数据库-->
<property name="mongoDbName" value="happylife"/>
<!--mongodb 用户名-->
<property name="mongoUserName" value="xiaoyu"/>
<!--mongodb 密码-->
<property name="mongoUserPwd" value="123456"/>
</bean>
</property>
- 本地数据存储为file,当业务模块为单节点时,可以使用。创建的文件名称TX_ + prefix配置 + 模块名称
<!--配置补偿类型为file-->
<property name="compensationCacheType" value="file"/>
<property name="txFileConfig">
<bean class="com.raincat.common.config.TxFileConfig">
<!--指定文件路径(可填可不填,不填时候,默认就是当前项目所在的路径)-->
<property name="path" value=""/>
<!--指定文件前缀,生成文件名称-->
<property name="prefix" value="consume"/>
</bean>
</property>