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
```