Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions raincat-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,10 @@
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>

</dependencies>
<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import com.raincat.core.compensation.command.TxCompensationCommand;
import com.raincat.core.concurrent.task.BlockTask;
import com.raincat.core.concurrent.task.BlockTaskHelper;
import com.raincat.core.concurrent.threadlocal.TxTransactionLocal;
import com.raincat.core.concurrent.threadpool.TransactionThreadPool;
import com.raincat.core.service.TxManagerMessageService;
import com.raincat.core.service.TxTransactionHandler;
Expand All @@ -40,6 +41,8 @@
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledFuture;
Expand Down Expand Up @@ -77,10 +80,13 @@ public Object handler(ProceedingJoinPoint point, TxTransactionInfo info) throws
LogUtil.info(LOGGER, "分布式事务参与方,开始执行,事务组id:{}", info::getTxGroupId);
final String taskKey = IdWorkerUtils.getInstance().createTaskKey();
final BlockTask task = BlockTaskHelper.getInstance().getTask(taskKey);
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();

transactionThreadPool
.newFixedThreadPool()
.execute(() -> {
TxTransactionLocal.getInstance().setTxGroupId(info.getTxGroupId());
RequestContextHolder.setRequestAttributes(requestAttributes);
final String waitKey = IdWorkerUtils.getInstance().createTaskKey();
final BlockTask waitTask = BlockTaskHelper.getInstance().getTask(waitKey);
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@
package com.raincat.springcloud.feign;


import com.raincat.common.constant.CommonConstant;
import com.raincat.core.concurrent.threadlocal.TxTransactionLocal;
import feign.Feign;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
Expand All @@ -28,11 +32,24 @@
*/
@Configuration
public class RestTemplateConfiguration {

/*
@Bean
@Scope("prototype")
public Feign.Builder feignBuilder() {
return Feign.builder().requestInterceptor(new RestTemplateInterceptor());
}*/

@Bean("txRequestInterceptor")
public RequestInterceptor txRequestInterceptor() {

return new RequestInterceptor() {
@Override
public void apply(RequestTemplate template) {
template.header(CommonConstant.TX_TRANSACTION_GROUP, TxTransactionLocal.getInstance().getTxGroupId());

}
};
}


}