You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/08/29 06:11:42 UTC

[incubator-servicecomb-saga] branch master updated: SCB-874 saga dubbo demo insert sql and readme optimization (#276)

This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git


The following commit(s) were added to refs/heads/master by this push:
     new f54e7e8  SCB-874 saga dubbo demo insert sql and readme optimization (#276)
f54e7e8 is described below

commit f54e7e89fce791df8f8e3d3ed623aeb7b0d42aad
Author: fcg <56...@qq.com>
AuthorDate: Wed Aug 29 14:11:40 2018 +0800

    SCB-874 saga dubbo demo insert sql and readme optimization (#276)
    
    
    * SCB-874:saga dubbo demo insert sql and readme optimization
    https://issues.apache.org/jira/projects/SCB/issues/SCB-874?filter=allopenissues
    
    * SCB-874:saga dubbo demo insert sql and readme optimization
    https://issues.apache.org/jira/projects/SCB/issues/SCB-874?filter=allopenissues
---
 saga-demo/saga-dubbo-demo/README.md                | 86 +++++++++++++++++++++-
 .../servicea/src/main/resources/schema-mysql.sql   |  4 +-
 .../src/main/resources/schema-postgresql.sql       |  2 +-
 .../serviceb/src/main/resources/schema-mysql.sql   |  4 +-
 .../src/main/resources/schema-postgresql.sql       |  2 +-
 .../servicec/src/main/resources/schema-mysql.sql   |  4 +-
 .../src/main/resources/schema-postgresql.sql       |  2 +-
 saga-demo/saga-spring-demo/README.md               | 21 +++---
 8 files changed, 102 insertions(+), 23 deletions(-)

diff --git a/saga-demo/saga-dubbo-demo/README.md b/saga-demo/saga-dubbo-demo/README.md
index deadb4f..f8641d8 100644
--- a/saga-demo/saga-dubbo-demo/README.md
+++ b/saga-demo/saga-dubbo-demo/README.md
@@ -15,10 +15,88 @@ You will need:
 [alpha_server]: https://github.com/apache/incubator-servicecomb-saga/tree/master/alpha
 
 ## Running Demo
-```bash
-$ mvn clean install -DskipTests -Pdocker
-$ ./saga-dubbo-demo.sh up
+1. run the following command to create docker images in saga project root folder.
+   ```
+   mvn clean install -DskipTests -Pdocker -Pdemo
+   ```
+2. Enter the saga dubbo demo directory and give permissions to script
+   ```
+   cd ./saga-demo/saga-dubbo-demo
+   chmod +x saga-dubbo-demo.sh
+   ```
+3. start the whole application up(including alpha server and three demo services)
+   ```
+   ./saga-dubbo-demo.sh up
+   ```
+    **Note:** If you prefer to use MySQL as alpha's backend database, you need to try the following steps instead:
+    1. add dependency of `mysql-connector-java` in `alpha/alpha-server/pom.xml`
+     ```xml
+         <dependency>
+           <groupId>mysql</groupId>
+           <artifactId>mysql-connector-java</artifactId>
+         </dependency>
+     ```
+    2. re-generate saga's docker images in saga project root folder
+     ```bash
+     mvn package -DskipTests -Pdocker -Pdemo
+     ```
+    3. start application up in `saga-dubbo-demo` with the following command
+     ```
+	 cd ./saga-demo/saga-dubbo-demo
+     ./saga-dubbo-demo.sh up-mysql
+     ```
+
+    **Note:** If you want start alpha server and demon services separately, you can try the following steps:
+    1. start alpha server
+     ```bash
+         ./saga-dubbo-demo.sh up-alpha
+     ```
+    2. when alpha server started complatelly, then start the demo services
+     ```bash
+         ./saga-dubbo-demo.sh up-demo
+     ```
+4. stop application
+   ```
+   ./saga-dubbo-demo.sh down
+   ```
+
+Use browser to run transaction demos:
+A:servicea B:serviceb C:servicec
+
+A->B
+```
+ http://${host_address}:8071/serviceInvoke/Ab
+```
+
+A->B (A throw an exception)
+```
+ http://${host_address}:8071/serviceInvoke/AExceptionWhenAb
+```
+
+A->B (B throw an exception)
+```
+ http://${host_address}:8071/serviceInvoke/BExceptionWhenAb
+```
+
+A->B A->C
+```
+ http://${host_address}:8071/serviceInvoke/AbAc
+```
+
+A->B A->C (C throw an exception)
+```
+ http://${host_address}:8071/serviceInvoke/CExceptionWhenAbAc
+```
+
+A->B B->C
+```
+ http://${host_address}:8071/serviceInvoke/AbBc
+```
+
+A->B B->C (C throw an exception)
+```
+ http://${host_address}:8071/serviceInvoke/CExceptionWhenAbBc
 ```
 
 ## Debugging
-Take the [spring-demo debugging](../saga-spring-demo#debugging) as a reference.
+Take the [spring-demo debugging](../saga-spring-demo#debugging) as a reference.
\ No newline at end of file
diff --git a/saga-demo/saga-dubbo-demo/servicea/src/main/resources/schema-mysql.sql b/saga-demo/saga-dubbo-demo/servicea/src/main/resources/schema-mysql.sql
index 91fc88a..4802838 100644
--- a/saga-demo/saga-dubbo-demo/servicea/src/main/resources/schema-mysql.sql
+++ b/saga-demo/saga-dubbo-demo/servicea/src/main/resources/schema-mysql.sql
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-CREATE TABLE `testa` (
+CREATE TABLE IF NOT EXISTS `testa` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `service` varchar(128) DEFAULT NULL,
   `vstatus` varchar(128) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
-INSERT INTO `testa` (`id`, `service`, `vstatus`) VALUES ('1','servicea','init');
\ No newline at end of file
+INSERT INTO testa SELECT '1','servicea','init' WHERE NOT EXISTS (SELECT 1 FROM testa WHERE id = '1');
\ No newline at end of file
diff --git a/saga-demo/saga-dubbo-demo/servicea/src/main/resources/schema-postgresql.sql b/saga-demo/saga-dubbo-demo/servicea/src/main/resources/schema-postgresql.sql
index 21c05cd..b56018a 100644
--- a/saga-demo/saga-dubbo-demo/servicea/src/main/resources/schema-postgresql.sql
+++ b/saga-demo/saga-dubbo-demo/servicea/src/main/resources/schema-postgresql.sql
@@ -23,4 +23,4 @@ CREATE TABLE IF NOT EXISTS testa (
 
 CREATE INDEX IF NOT EXISTS testa_index ON testa (id, service);
 
-INSERT INTO testa (id, service, vstatus) VALUES ('1','servicea','init');
\ No newline at end of file
+INSERT INTO testa SELECT '1','servicea','init' WHERE NOT EXISTS (SELECT 1 FROM testa WHERE id = '1');
\ No newline at end of file
diff --git a/saga-demo/saga-dubbo-demo/serviceb/src/main/resources/schema-mysql.sql b/saga-demo/saga-dubbo-demo/serviceb/src/main/resources/schema-mysql.sql
index 2bc2a0c..8803bf4 100644
--- a/saga-demo/saga-dubbo-demo/serviceb/src/main/resources/schema-mysql.sql
+++ b/saga-demo/saga-dubbo-demo/serviceb/src/main/resources/schema-mysql.sql
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-CREATE TABLE `testb` (
+CREATE TABLE IF NOT EXISTS `testb` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `service` varchar(128) DEFAULT NULL,
   `vstatus` varchar(128) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-INSERT INTO `testb` (`id`, `service`, `vstatus`) VALUES ('2','serviceb','init');
\ No newline at end of file
+INSERT INTO testb SELECT '2','serviceb','init' WHERE NOT EXISTS (SELECT 1 FROM testb WHERE id = '2');
\ No newline at end of file
diff --git a/saga-demo/saga-dubbo-demo/serviceb/src/main/resources/schema-postgresql.sql b/saga-demo/saga-dubbo-demo/serviceb/src/main/resources/schema-postgresql.sql
index a50781b..542bc68 100644
--- a/saga-demo/saga-dubbo-demo/serviceb/src/main/resources/schema-postgresql.sql
+++ b/saga-demo/saga-dubbo-demo/serviceb/src/main/resources/schema-postgresql.sql
@@ -23,4 +23,4 @@ CREATE TABLE IF NOT EXISTS testb (
 
 CREATE INDEX IF NOT EXISTS testb_index ON testb (id, service);
 
-INSERT INTO testb (id, service, vstatus) VALUES ('1','serviceb','init');
\ No newline at end of file
+INSERT INTO testb SELECT '2','serviceb','init' WHERE NOT EXISTS (SELECT 1 FROM testb WHERE id = '2');
\ No newline at end of file
diff --git a/saga-demo/saga-dubbo-demo/servicec/src/main/resources/schema-mysql.sql b/saga-demo/saga-dubbo-demo/servicec/src/main/resources/schema-mysql.sql
index 8a32eae..54547a3 100644
--- a/saga-demo/saga-dubbo-demo/servicec/src/main/resources/schema-mysql.sql
+++ b/saga-demo/saga-dubbo-demo/servicec/src/main/resources/schema-mysql.sql
@@ -15,10 +15,10 @@
  * limitations under the License.
  */
 
-CREATE TABLE `testc` (
+CREATE TABLE IF NOT EXISTS `testc` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `service` varchar(128) DEFAULT NULL,
   `vstatus` varchar(128) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-INSERT INTO `testc` (`id`, `service`, `vstatus`) VALUES ('3','servicec','init');
\ No newline at end of file
+INSERT INTO testc SELECT '3','servicec','init' WHERE NOT EXISTS (SELECT 1 FROM testc WHERE id = '3');
\ No newline at end of file
diff --git a/saga-demo/saga-dubbo-demo/servicec/src/main/resources/schema-postgresql.sql b/saga-demo/saga-dubbo-demo/servicec/src/main/resources/schema-postgresql.sql
index 58f27dc..e1c0641 100644
--- a/saga-demo/saga-dubbo-demo/servicec/src/main/resources/schema-postgresql.sql
+++ b/saga-demo/saga-dubbo-demo/servicec/src/main/resources/schema-postgresql.sql
@@ -23,4 +23,4 @@ CREATE TABLE IF NOT EXISTS testc (
 
 CREATE INDEX IF NOT EXISTS testc_index ON testc (id, service);
 
-INSERT INTO testc (id, service, vstatus) VALUES ('1','servicec','init');
\ No newline at end of file
+INSERT INTO testc SELECT '3','servicec','init' WHERE NOT EXISTS (SELECT 1 FROM testc WHERE id = '3');
\ No newline at end of file
diff --git a/saga-demo/saga-spring-demo/README.md b/saga-demo/saga-spring-demo/README.md
index 0502493..cf5f76c 100644
--- a/saga-demo/saga-spring-demo/README.md
+++ b/saga-demo/saga-spring-demo/README.md
@@ -23,10 +23,14 @@ You can run the demo using either docker compose or executable files.
 ### via docker compose
 1. run the following command to create docker images in saga project root folder.
    ```
-   mvn clean package -DskipTests -Pdocker -Pdemo
+   mvn clean install -DskipTests -Pdocker -Pdemo
    ```
-
-2. start the whole application up(including alpha server and three demo services)
+2. Enter the saga spring demo directory and give permissions to script
+   ```
+   cd ./saga-demo/saga-spring-demo
+   chmod +x saga-demo.sh
+   ```
+3. start the whole application up(including alpha server and three demo services)
    ```
    ./saga-demo.sh up
    ```
@@ -39,16 +43,13 @@ You can run the demo using either docker compose or executable files.
             <artifactId>mysql-connector-java</artifactId>
           </dependency>
       ```
-   2. remove alpha server's docker image
-      ```bash
-      docker rmi -f $(docker images | grep alpha-server | awk '{print $3}')
-      ```
-   3. re-generate saga's docker images
+   2. re-generate saga's docker images in saga project root folder
       ```bash
       mvn package -DskipTests -Pdocker -Pdemo
       ```
-   4. start application up in `saga-demo/booking` with the following command
+   3. start application up in `saga-demo/booking` with the following command
       ```
+	  cd ./saga-demo/saga-spring-demo
       ./saga-demo.sh up-mysql
       ```
 
@@ -62,7 +63,7 @@ You can run the demo using either docker compose or executable files.
           ./saga-demo.sh up-demo
       ```
 
-3. stop application
+4. stop application
    ```
    ./saga-demo.sh down
    ```