-
Notifications
You must be signed in to change notification settings - Fork 1.4k
SpringCloud User Gruid
纳兰丶 edited this page Aug 17, 2018
·
4 revisions
- 在你的实现项目中引入jar包,并在实现接口上添加: @Tcc(confirmMethod = "confirm", cancelMethod = "cancel")confirmMethod,cancelMethod对应为的方法名称
<dependency>
<groupId>com.hmily.tcc</groupId>
<artifactId>hmily-tcc-springcloud</artifactId>
<version>{you version}</version>
</dependency>
- 配置applicationContext.xml,如下所示,如果具体的配置问题请参照配置详解
<!-- Aspect 切面配置,是否开启AOP切面-->
<aop:aspectj-autoproxy expose-proxy="true"/>
<!--扫描框架的包-->
<context:component-scan base-package="com.hmily.tcc.*"/>
<!--启动类属性配置-->
<bean id="hmilyTransactionBootstrap" class="com.hmily.tcc.core.bootstrap.HmilyTransactionBootstrap">
<property name="serializer" value="kryo"/>
<property name="recoverDelayTime" value="120"/>
<property name="retryMax" value="3"/>
<property name="scheduledDelay" value="120"/>
<property name="scheduledThreadMax" value="4"/>
<property name="repositorySupport" value="db"/>
<property name="tccDbConfig">
<bean class="com.hmily.tcc.common.config.TccDbConfig">
<property name="url"
value="jdbc:mysql://192.168.1.98:3306/tcc?useUnicode=true&characterEncoding=utf8"/>
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
</property>
</bean>
-
在消费方引入jar包,如果消费方也需要进行tcc事务,同上配置
-
在FeignClient上的调用方法上加上@Tcc注解,并指定配置configuration,具体配置可参考以下:
@Configuration
public class MyConfiguration {
@Bean
@Scope("prototype")
public Feign.Builder feignBuilder() {
return Feign.builder()
.requestInterceptor(new TccRestTemplateInterceptor())
.invocationHandlerFactory(invocationHandlerFactory());
}
@Bean
public InvocationHandlerFactory invocationHandlerFactory() {
return (target, dispatch) -> {
TccFeignHandler handler = new TccFeignHandler();
handler.setTarget(target);
handler.setHandlers(dispatch);
return handler;
};
}
@Bean
Request.Options feignOptions() {
return new Request.Options(/**connectTimeoutMillis**/1 * 5000, /** readTimeoutMillis **/1 * 5000);
}
@Bean
Retryer feignRetryer() {
return Retryer.NEVER_RETRY;
}
}
- 启动你的项目,如果具体的配置问题请参照springcloud-demo工程