blob: dd481048b7fbe28ebeae5248b66356a2156e945e [file] [log] [blame] [view]
# Saga-dubbo-demo
This demo including three services:
* servicea
* serviceb
* servicec
## Prerequisites
You will need:
1. [JDK 1.8][jdk]
2. [Maven 3.x][maven]
3. [alpha server][alpha_server]
[jdk]: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
[maven]: https://maven.apache.org/install.html
[alpha_server]: https://github.com/apache/servicecomb-saga/tree/master/alpha
## Running Demo
1. run the following command to create docker images in saga project root folder.
```
mvn clean install -DskipTests -Pdocker -Pdemo
```
2. 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.