wenj91 closed pull request #179: Wenj91 saga branch test URL: https://github.com/apache/incubator-servicecomb-saga/pull/179
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/alpha/alpha-server/src/main/resources/application.yaml b/alpha/alpha-server/src/main/resources/application.yaml index 43b39dc6..34d073d9 100644 --- a/alpha/alpha-server/src/main/resources/application.yaml +++ b/alpha/alpha-server/src/main/resources/application.yaml @@ -16,16 +16,22 @@ ## --------------------------------------------------------------------------- server: port: 8090 +spring: + profiles: + active: prd --- spring: profiles: prd datasource: - username: saga - password: password - url: jdbc:postgresql://postgresql.servicecomb.io:5432/saga?useSSL=false + username: wenj91 + password: 123456 + url: jdbc:postgresql://127.0.0.1:5432/saga?useSSL=false platform: postgresql # continue-on-error: true +alpha: + server: + port: 8888 --- spring: diff --git a/omega/omega-transport/omega-transport-dubbo/pom.xml b/omega/omega-transport/omega-transport-dubbo/pom.xml new file mode 100644 index 00000000..8fef5d65 --- /dev/null +++ b/omega/omega-transport/omega-transport-dubbo/pom.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>omega-transport</artifactId> + <groupId>org.apache.servicecomb.saga</groupId> + <version>0.2.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>omega-transport-dubbo</artifactId> + + <properties> + <dubbo.version>2.5.3</dubbo.version> + </properties> + + <dependencies> + <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo --> + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>dubbo</artifactId> + <version>2.6.1</version> + </dependency> + + + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-beans</artifactId> + <version>RELEASE</version> + <scope>compile</scope> + </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-context</artifactId> + <version>RELEASE</version> + <scope>compile</scope> + </dependency> + </dependencies> + +</project> \ No newline at end of file diff --git a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/DubboConfig.java b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/DubboConfig.java new file mode 100644 index 00000000..d126456b --- /dev/null +++ b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/DubboConfig.java @@ -0,0 +1,31 @@ +package org.apache.servicecomb.saga.omega.transport.dubbo; + +import com.alibaba.dubbo.config.ConsumerConfig; +import com.alibaba.dubbo.config.ProviderConfig; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class DubboConfig { + @Bean + public SpringContext springContext(){ + SpringContext springContext = new SpringContext(); + return springContext; + } + + @Bean + public ProviderConfig providerConfig(){ + ProviderConfig providerConfig = new ProviderConfig(); + providerConfig.setFilter("dubboProviderFilter"); + + return providerConfig; + } + + @Bean + public ConsumerConfig consumerConfig(){ + ConsumerConfig consumerConfig = new ConsumerConfig(); + consumerConfig.setFilter("dubboConsumerFilter"); + + return consumerConfig; + } +} diff --git a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/DubboConsumerFilter.java b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/DubboConsumerFilter.java new file mode 100644 index 00000000..56d324d0 --- /dev/null +++ b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/DubboConsumerFilter.java @@ -0,0 +1,36 @@ +package org.apache.servicecomb.saga.omega.transport.dubbo; + +import com.alibaba.dubbo.rpc.*; +import org.apache.servicecomb.saga.omega.context.OmegaContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.apache.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY; +import static org.apache.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID_KEY; + +public class DubboConsumerFilter implements Filter { + private static Logger log = LoggerFactory.getLogger(DubboConsumerFilter.class); + + @Override + public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { + log.debug("saga dubbo consumer filter"); + OmegaContext omegaContext = SpringContext.getBean(OmegaContext.class); + if (null == omegaContext){ + log.debug("omega context == null"); + } + + RpcContext rpcContext = RpcContext.getContext(); + if (null != omegaContext && omegaContext.globalTxId() != null) { + rpcContext.setAttachment(GLOBAL_TX_ID_KEY, omegaContext.globalTxId()); + rpcContext.setAttachment(LOCAL_TX_ID_KEY, omegaContext.localTxId()); + + log.debug("Added {} {} and {} {} to request header", + GLOBAL_TX_ID_KEY, + omegaContext.globalTxId(), + LOCAL_TX_ID_KEY, + omegaContext.localTxId()); + } + + return invoker.invoke(invocation); + } +} diff --git a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/DubboProviderFilter.java b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/DubboProviderFilter.java new file mode 100644 index 00000000..be9ad1c6 --- /dev/null +++ b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/DubboProviderFilter.java @@ -0,0 +1,33 @@ +package org.apache.servicecomb.saga.omega.transport.dubbo; + +import com.alibaba.dubbo.rpc.*; +import org.apache.servicecomb.saga.omega.context.OmegaContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static org.apache.servicecomb.saga.omega.context.OmegaContext.GLOBAL_TX_ID_KEY; +import static org.apache.servicecomb.saga.omega.context.OmegaContext.LOCAL_TX_ID_KEY; + +public class DubboProviderFilter implements Filter { + private static final Logger log = LoggerFactory.getLogger(DubboProviderFilter.class); + + @Override + public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { + log.debug("saga dubbo provider filter"); + OmegaContext omegaContext = SpringContext.getBean(OmegaContext.class); + if (null == omegaContext){ + log.debug("omega context == null"); + } + + if (null != omegaContext){ + RpcContext rpcContext = RpcContext.getContext(); + if (null != rpcContext.getAttachment(GLOBAL_TX_ID_KEY)){ + omegaContext.setGlobalTxId(rpcContext.getAttachment(GLOBAL_TX_ID_KEY)); + omegaContext.setLocalTxId(rpcContext.getAttachment(LOCAL_TX_ID_KEY)); + log.debug("set omega context success"); + } + } + + return invoker.invoke(invocation); + } +} diff --git a/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SpringContext.java b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SpringContext.java new file mode 100644 index 00000000..4724c736 --- /dev/null +++ b/omega/omega-transport/omega-transport-dubbo/src/main/java/org/apache/servicecomb/saga/omega/transport/dubbo/SpringContext.java @@ -0,0 +1,23 @@ +package org.apache.servicecomb.saga.omega.transport.dubbo; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; + +public class SpringContext implements ApplicationContextAware { + + private static final Logger log = LoggerFactory.getLogger(SpringContext.class); + + private static ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringContext.applicationContext = applicationContext; + } + + public static <T> T getBean(Class<T> tClass){ + return applicationContext.getBean(tClass); + } +} diff --git a/omega/omega-transport/omega-transport-dubbo/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter b/omega/omega-transport/omega-transport-dubbo/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter new file mode 100644 index 00000000..74634ef0 --- /dev/null +++ b/omega/omega-transport/omega-transport-dubbo/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter @@ -0,0 +1,2 @@ +dubboProviderFilter=org.apache.servicecomb.saga.omega.transport.dubbo.DubboProviderFilter +dubboConsumerFilter=org.apache.servicecomb.saga.omega.transport.dubbo.DubboConsumerFilter \ No newline at end of file diff --git a/omega/omega-transport/omega-transport-dubbo/src/main/resources/META-INF/spring.factories b/omega/omega-transport/omega-transport-dubbo/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..2a8e2553 --- /dev/null +++ b/omega/omega-transport/omega-transport-dubbo/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + org.apache.servicecomb.saga.omega.transport.dubbo.DubboConfig \ No newline at end of file diff --git a/omega/omega-transport/pom.xml b/omega/omega-transport/pom.xml index 8d5751ef..055a4611 100644 --- a/omega/omega-transport/pom.xml +++ b/omega/omega-transport/pom.xml @@ -34,6 +34,7 @@ <modules> <module>omega-transport-resttemplate</module> <module>omega-transport-servicecomb</module> + <module>omega-transport-dubbo</module> </modules> <dependencies> diff --git a/pom.xml b/pom.xml index d99ce86c..f571d33b 100644 --- a/pom.xml +++ b/pom.xml @@ -428,7 +428,7 @@ <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> - <version>${spring.boot.version}</version> + <version>${spring.boot2.version}</version> </plugin> <plugin> <groupId>org.commonjava.maven.plugins</groupId> @@ -466,7 +466,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> - <version>3.1</version> + <version>3.7.0</version> <configuration> <encoding>UTF-8</encoding> <source>1.8</source> diff --git a/saga-demo/booking/booking/src/main/java/org/apache/servicecomb/saga/demo/pack/booking/BookingController.java b/saga-demo/booking/booking/src/main/java/org/apache/servicecomb/saga/demo/pack/booking/BookingController.java index c1948117..3c6059af 100644 --- a/saga-demo/booking/booking/src/main/java/org/apache/servicecomb/saga/demo/pack/booking/BookingController.java +++ b/saga-demo/booking/booking/src/main/java/org/apache/servicecomb/saga/demo/pack/booking/BookingController.java @@ -28,10 +28,10 @@ @RestController public class BookingController { - @Value("${car.service.address:http://pack-car.servicecomb.io:8080}") + @Value("${car.service.address:http://127.0.0.1:8082}") private String carServiceUrl; - @Value("${hotel.service.address:http://pack-hotel.servicecomb.io:8080}") + @Value("${hotel.service.address:http://127.0.0.1:8081}") private String hotelServiceUrl; @Autowired diff --git a/saga-demo/booking/booking/src/main/resources/application.yaml b/saga-demo/booking/booking/src/main/resources/application.yaml index ef8f8336..060028e6 100644 --- a/saga-demo/booking/booking/src/main/resources/application.yaml +++ b/saga-demo/booking/booking/src/main/resources/application.yaml @@ -19,4 +19,6 @@ spring: name: pack-booking alpha: cluster: - address: alpha-server.servicecomb.io:8080 + address: 127.0.0.1:8888 +server: + port: 8083 diff --git a/saga-demo/booking/car/src/main/resources/application.yaml b/saga-demo/booking/car/src/main/resources/application.yaml index 2a1c2b7a..b84b39ff 100644 --- a/saga-demo/booking/car/src/main/resources/application.yaml +++ b/saga-demo/booking/car/src/main/resources/application.yaml @@ -19,4 +19,6 @@ spring: name: pack-car alpha: cluster: - address: alpha-server.servicecomb.io:8080 + address: 127.0.0.1:8888 +server: + port: 8082 \ No newline at end of file diff --git a/saga-demo/booking/hotel/src/main/resources/application.yaml b/saga-demo/booking/hotel/src/main/resources/application.yaml index cb03be04..281b411e 100644 --- a/saga-demo/booking/hotel/src/main/resources/application.yaml +++ b/saga-demo/booking/hotel/src/main/resources/application.yaml @@ -19,4 +19,6 @@ spring: name: pack-hotel alpha: cluster: - address: alpha-server.servicecomb.io:8080 + address: 127.0.0.1:8888 +server: + port: 8081 diff --git a/saga-dubbo/pom.xml b/saga-dubbo/pom.xml new file mode 100644 index 00000000..2badce34 --- /dev/null +++ b/saga-dubbo/pom.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>spring-boot-dubbo</groupId> + <artifactId>spring-boot-dubbo</artifactId> + <packaging>pom</packaging> + <version>1.0-SNAPSHOT</version> + <modules> + <module>spring-boot-dubbo-api</module> + <module>spring-boot-dubbo-consumer</module> + <module>spring-boot-dubbo-provider</module> + </modules> + + <parent> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-parent</artifactId> + <version>2.0.1.RELEASE</version> + </parent> + + <dependencies> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + <dependency> + <groupId>com.alibaba.boot</groupId> + <artifactId>dubbo-spring-boot-starter</artifactId> + <version>0.1.0</version> + </dependency> + <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> + <dependency> + <groupId>redis.clients</groupId> + <artifactId>jedis</artifactId> + <version>2.9.0</version> + </dependency> + </dependencies> + +</project> \ No newline at end of file diff --git a/saga-dubbo/saga-dubbo-api/pom.xml b/saga-dubbo/saga-dubbo-api/pom.xml new file mode 100644 index 00000000..1e1f21c6 --- /dev/null +++ b/saga-dubbo/saga-dubbo-api/pom.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>spring-boot-dubbo</artifactId> + <groupId>spring-boot-dubbo</groupId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>spring-boot-dubbo-api</artifactId> + + +</project> \ No newline at end of file diff --git a/saga-dubbo/saga-dubbo-api/src/main/java/com/github/wenj91/dubbo/api/TestService.java b/saga-dubbo/saga-dubbo-api/src/main/java/com/github/wenj91/dubbo/api/TestService.java new file mode 100644 index 00000000..e71df106 --- /dev/null +++ b/saga-dubbo/saga-dubbo-api/src/main/java/com/github/wenj91/dubbo/api/TestService.java @@ -0,0 +1,5 @@ +package com.github.wenj91.dubbo.api; + +public interface TestService { + String sayHello(String name); +} diff --git a/saga-dubbo/saga-dubbo-consumer/pom.xml b/saga-dubbo/saga-dubbo-consumer/pom.xml new file mode 100644 index 00000000..eb0d0407 --- /dev/null +++ b/saga-dubbo/saga-dubbo-consumer/pom.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>spring-boot-dubbo</artifactId> + <groupId>spring-boot-dubbo</groupId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>spring-boot-dubbo-consumer</artifactId> + + +</project> \ No newline at end of file diff --git a/saga-dubbo/saga-dubbo-provider/pom.xml b/saga-dubbo/saga-dubbo-provider/pom.xml new file mode 100644 index 00000000..1a17018e --- /dev/null +++ b/saga-dubbo/saga-dubbo-provider/pom.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>spring-boot-dubbo</artifactId> + <groupId>spring-boot-dubbo</groupId> + <version>1.0-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + + <artifactId>spring-boot-dubbo-provider</artifactId> + <dependencies> + <dependency> + <groupId>spring-boot-dubbo</groupId> + <artifactId>spring-boot-dubbo-api</artifactId> + <version>1.0-SNAPSHOT</version> + <scope>compile</scope> + </dependency> + </dependencies> + + +</project> \ No newline at end of file diff --git a/saga-dubbo/saga-dubbo-provider/src/main/java/com/github/wenj91/dubbo/provider/ProviderApp.java b/saga-dubbo/saga-dubbo-provider/src/main/java/com/github/wenj91/dubbo/provider/ProviderApp.java new file mode 100644 index 00000000..0bc11237 --- /dev/null +++ b/saga-dubbo/saga-dubbo-provider/src/main/java/com/github/wenj91/dubbo/provider/ProviderApp.java @@ -0,0 +1,11 @@ +package com.github.wenj91.dubbo.provider; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ProviderApp { + public static void main(String...args){ + SpringApplication.run(ProviderApp.class, args); + } +} diff --git a/saga-dubbo/saga-dubbo-provider/src/main/java/com/github/wenj91/dubbo/provider/service/impl/TestServiceImpl.java b/saga-dubbo/saga-dubbo-provider/src/main/java/com/github/wenj91/dubbo/provider/service/impl/TestServiceImpl.java new file mode 100644 index 00000000..251ebdca --- /dev/null +++ b/saga-dubbo/saga-dubbo-provider/src/main/java/com/github/wenj91/dubbo/provider/service/impl/TestServiceImpl.java @@ -0,0 +1,9 @@ +package com.github.wenj91.dubbo.provider.service.impl; + +import com.github.wenj91.dubbo.api.TestService; + +public class TestServiceImpl implements TestService { + public String sayHello(String name) { + return "hello, " + name + "!"; + } +} ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services