You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicecomb.apache.org by GitBox <gi...@apache.org> on 2018/05/02 16:20:47 UTC

[GitHub] wenj91 closed pull request #179: Wenj91 saga branch test

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:
users@infra.apache.org


With regards,
Apache Git Services