-
-
Notifications
You must be signed in to change notification settings - Fork 109
User Guide 0.5.x
- JDK版本:8.0及以上版本;
- 禁止对Feign/Ribbon/RestTemplate等HTTP请求自行进行封装,但允许拦截;
- 禁止使用Spring Cloud的IRule,如有类似需求,可考虑扩展ByteJTA的TransactionRule接口;
- 必须且仅可指定一个<dubbo:application name="..." />元素,其name不能为空,且必须唯一;
- 必须且仅可指定一个<dubbo:protocol port="..." />元素,其port不能为空,也不能为-1;
- 定义dubbo服务提供者时(<dubbo:service />):a、filter必须为bytejta;b、loadbalance必须为bytejta;c 、cluster必须为failfast;d、retries必须为0;e、group必须为x-bytejta;
- 定义dubbo服务消费者时(<dubbo:reference />):a、filter必须为bytejta;b、loadbalance必须为bytejta;c 、cluster必须为failfast;d、retries必须为0;e、group必须为x-bytejta;
@Import(SpringCloudConfiguration.class)
@Import(DubboSupportConfiguration.class)
@Bean("primaryXADataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public XADataSource mysqlXA2() {
return DataSourceSpiBuilder.create().build();
}
@Bean("primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
@Primary
public DataSource mysql2(@Autowired @Qualifier("primaryXADataSource") XADataSource xaDataSourceInstance) {
return DataSourceCciBuilder.create(xaDataSourceInstance).build();
}
注意:对于每一个数据源,需要配置两个数据源对象:一个XADataSource、一个DataSource。业务系统最终使用的是DataSource,如本例中的primaryDataSource。
在某个事务T内,consumer端应用app1首次向provider端应用app2(集群环境)发起请求时,ByteJTA使用random负载均衡策略将其随机分发到一个app2实例(如inst2);后续app1在该事务T内再次向app2发起请求时,将始终落在inst2(即首次请求的处理实例)上。
当服务提供方应用使用了Context Path时,服务消费方需要在配置中体现,如:
org:
bytesoft:
bytejta:
contextpath:
springcloud-sample-provider: /sample-provider
上述配置将告知ByteJTA,应用springcloud-sample-provider使用的context-path为/sample-provider。
ByteJTA默认通过org.bytesoft.bytejta.supports.springcloud.rule.TransactionRuleImpl来提供路由决策。如果业务系统希望对Rule进行扩展,可以考虑通过org.bytesoft.bytejta.NFTransactionRuleClassName配置向ByteJTA注册自己的Rule实现。例如,
org:
bytesoft:
bytejta:
NFTransactionRuleClassName: xxx.RuleImpl
注意:xxx.RuleImpl需要实现org.bytesoft.bytejta.supports.springcloud.rule.TransactionRule接口。
If you've found byteJTA useful, and would like to support future development of byteJTA, please consider donating. Any amount is appreciated.
WeiXin
Alipay