diff --git a/txlcn-tc/pom.xml b/txlcn-tc/pom.xml index 1e3832b6db087d875f98a724150a41d3c8e6d120..0b91496676fa8c40a16c0ff0e4633d535af5dbfd 100644 --- a/txlcn-tc/pom.xml +++ b/txlcn-tc/pom.xml @@ -33,6 +33,12 @@ provided + + com.alibaba + dubbo + provided + + com.codingapi.txlcn txlcn-p6spy @@ -82,7 +88,6 @@ mysql-connector-java test - diff --git a/txlcn-tc/src/main/java/com/codingapi/txlcn/tc/rpc/DubboConsumerRpcTransactionInterceptor.java b/txlcn-tc/src/main/java/com/codingapi/txlcn/tc/rpc/DubboConsumerRpcTransactionInterceptor.java new file mode 100644 index 0000000000000000000000000000000000000000..e33a1738db2b483b0aa97bbd1979cdee4af8f7f7 --- /dev/null +++ b/txlcn-tc/src/main/java/com/codingapi/txlcn/tc/rpc/DubboConsumerRpcTransactionInterceptor.java @@ -0,0 +1,18 @@ +package com.codingapi.txlcn.tc.rpc; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.extension.Activate; +import com.alibaba.dubbo.rpc.*; + +/** + * @author zhanghonglong + * @date 2020/10/28 11:01 + */ +@Activate(group = Constants.CONSUMER) +public class DubboConsumerRpcTransactionInterceptor implements Filter { + @Override + public Result invoke(Invoker invoker, Invocation invocation) throws RpcException { + RpcTransactionContext.getInstance().build(invocation.getAttachments()::put); + return invoker.invoke(invocation); + } +} diff --git a/txlcn-tc/src/main/java/com/codingapi/txlcn/tc/rpc/DubboProviderRpcTransactionInterceptor.java b/txlcn-tc/src/main/java/com/codingapi/txlcn/tc/rpc/DubboProviderRpcTransactionInterceptor.java new file mode 100644 index 0000000000000000000000000000000000000000..ed1e50156c696e3b8be4ffb4acd204a6c1060a99 --- /dev/null +++ b/txlcn-tc/src/main/java/com/codingapi/txlcn/tc/rpc/DubboProviderRpcTransactionInterceptor.java @@ -0,0 +1,18 @@ +package com.codingapi.txlcn.tc.rpc; + +import com.alibaba.dubbo.common.Constants; +import com.alibaba.dubbo.common.extension.Activate; +import com.alibaba.dubbo.rpc.*; + +/** + * @author zhanghonglong + * @date 2020/10/28 11:01 + */ +@Activate(group = Constants.PROVIDER) +public class DubboProviderRpcTransactionInterceptor implements Filter { + @Override + public Result invoke(Invoker invoker, Invocation invocation) throws RpcException { + RpcTransactionContext.getInstance().invoke(invocation.getAttachments()::get); + return invoker.invoke(invocation); + } +} diff --git a/txlcn-tc/src/main/java/com/codingapi/txlcn/tc/rpc/RpcTransactionConfiguration.java b/txlcn-tc/src/main/java/com/codingapi/txlcn/tc/rpc/RpcTransactionConfiguration.java index d51e60e12ddfbddcee6f8b70e66dfb9152e05b78..2e14e9caaa26a7b93691dc74384f662cd1522949 100644 --- a/txlcn-tc/src/main/java/com/codingapi/txlcn/tc/rpc/RpcTransactionConfiguration.java +++ b/txlcn-tc/src/main/java/com/codingapi/txlcn/tc/rpc/RpcTransactionConfiguration.java @@ -49,7 +49,4 @@ public class RpcTransactionConfiguration { } } - - - } diff --git a/txlcn-tc/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter b/txlcn-tc/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter new file mode 100644 index 0000000000000000000000000000000000000000..7dd07058e1b31e67924484b110f0538d344dcf75 --- /dev/null +++ b/txlcn-tc/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter @@ -0,0 +1,2 @@ +DubboConsumerTransactionFilter=com.codingapi.txlcn.tc.rpc.DubboConsumerRpcTransactionInterceptor +DubboProviderTransactionFilter=com.codingapi.txlcn.tc.rpc.DubboProviderRpcTransactionInterceptor \ No newline at end of file