merged with upstream/wip-customer
This commit is contained in:
18
README.md
18
README.md
@@ -1,7 +1,7 @@
|
|||||||
#Event-Sourcing+CQRS example application
|
#Event-Sourcing+CQRS example application
|
||||||
|
|
||||||
This example application is the money transfer application described in my talk [Building and deploying microservices with event sourcing, CQRS and Docker](http://plainoldobjects.com/presentations/building-and-deploying-microservices-with-event-sourcing-cqrs-and-docker/).
|
This example application is the money transfer application described in my talk [Building and deploying microservices with event sourcing, CQRS and Docker](http://plainoldobjects.com/presentations/building-and-deploying-microservices-with-event-sourcing-cqrs-and-docker/).
|
||||||
This talk describe a way of architecting highly scalable and available applications that is based on microservices, polyglot persistence,
|
This talk describes a way of architecting highly scalable and available applications that is based on microservices, polyglot persistence,
|
||||||
event sourcing (ES) and command query responsibility segregation (CQRS).
|
event sourcing (ES) and command query responsibility segregation (CQRS).
|
||||||
Applications consist of loosely coupled components that communicate using events.
|
Applications consist of loosely coupled components that communicate using events.
|
||||||
These components can be deployed either as separate services or packaged as a monolithic application for simplified development and testing.
|
These components can be deployed either as separate services or packaged as a monolithic application for simplified development and testing.
|
||||||
@@ -94,9 +94,12 @@ First, you need to tell the query side code how to connect to MongoDB:
|
|||||||
```
|
```
|
||||||
|
|
||||||
[Docker Compose](https://docs.docker.com/compose/) is a great way to run MongoDB.
|
[Docker Compose](https://docs.docker.com/compose/) is a great way to run MongoDB.
|
||||||
You can run the `docker-compose up -d mongodb` to run MongoDB.
|
You can run the `docker-compose up -d mongodb` to run MongoDB and then set `SPRING_DATA_MONGODB_URI` as follows:
|
||||||
|
```
|
||||||
|
export SPRING_DATA_MONGODB_URI=mongodb://$(docker-machine ip default)/yourdb
|
||||||
|
```
|
||||||
|
|
||||||
Second, some of the tests in accounts-command-side-service, transactions-command-side-service, accounts-query-side-service and e2e-test need you need to set some environment variables that tell them how to connect to the Event Store server.
|
Second, some of the tests in accounts-command-side-service, transactions-command-side-service, accounts-query-side-service and e2e-test require you to set some environment variables that tell them how to connect to the Event Store server.
|
||||||
But don't worry.
|
But don't worry.
|
||||||
The build is configured to ignore failures for those projects.
|
The build is configured to ignore failures for those projects.
|
||||||
|
|
||||||
@@ -117,6 +120,15 @@ Simply use this command:
|
|||||||
java -jar monolithic-service/build/libs/monolithic-service.jar
|
java -jar monolithic-service/build/libs/monolithic-service.jar
|
||||||
```
|
```
|
||||||
|
|
||||||
|
This will start the service running on port 8080 (you can change using the --server.port=9999 option).
|
||||||
|
|
||||||
|
Once the service has started you can open the Swagger UI: http://localhost:8080/swagger-ui.html.
|
||||||
|
You can then:
|
||||||
|
|
||||||
|
1. Create two accounts (save the account ids)
|
||||||
|
2. Create a money transfer
|
||||||
|
3. View the updated account balances
|
||||||
|
|
||||||
## Running the microservices
|
## Running the microservices
|
||||||
|
|
||||||
The other option is to run the services separately.
|
The other option is to run the services separately.
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ if [ "$1" = "--no-rm" ] ; then
|
|||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
|
|
||||||
${DOCKER_COMPOSE?} up -d mongodb
|
${DOCKER_COMPOSE?} up -d mongodb $EXTRA_INFRASTRUCTURE_SERVICES
|
||||||
|
|
||||||
if [ -z "$DOCKER_HOST_IP" ] ; then
|
if [ -z "$DOCKER_HOST_IP" ] ; then
|
||||||
if which docker-machine >/dev/null; then
|
if which docker-machine >/dev/null; then
|
||||||
|
|||||||
@@ -7,19 +7,19 @@ This application consists of three microservices:
|
|||||||
* Account Service - the command side business logic for Accounts
|
* Account Service - the command side business logic for Accounts
|
||||||
* Money Transfer Service - the command side business logic for Money Transfers
|
* Money Transfer Service - the command side business logic for Money Transfers
|
||||||
* Query service - query side implementation of a MongoDB-based, denormalized view of Accounts and MoneyTransfers
|
* Query service - query side implementation of a MongoDB-based, denormalized view of Accounts and MoneyTransfers
|
||||||
|
|
||||||
The Account Service consists of the following modules:
|
The Account Service consists of the following modules:
|
||||||
|
|
||||||
* accounts-command-side-backend - the Account aggregate
|
* accounts-command-side-backend - the Account aggregate
|
||||||
* accounts-command-side-web - a REST API for creating and retrieving Accounts
|
* accounts-command-side-web - a REST API for creating and retrieving Accounts
|
||||||
* accounts-command-side-service - a standalone microservice
|
* accounts-command-side-service - a standalone microservice
|
||||||
|
|
||||||
The Money Transfer Service consists of the following modules:
|
The Money Transfer Service consists of the following modules:
|
||||||
|
|
||||||
* transactions-command-side-backend - the MoneyTransfer aggregate
|
* transactions-command-side-backend - the MoneyTransfer aggregate
|
||||||
* transactions-command-side-web - a REST API for creating and retrieving Money Transfers
|
* transactions-command-side-web - a REST API for creating and retrieving Money Transfers
|
||||||
* transactions-command-side-service - a standalone microservice
|
* transactions-command-side-service - a standalone microservice
|
||||||
|
|
||||||
The Query Service consists the following modules:
|
The Query Service consists the following modules:
|
||||||
|
|
||||||
* accounts-query-side-backend - MongoDB-based, denormalized view of Accounts and MoneyTransfers
|
* accounts-query-side-backend - MongoDB-based, denormalized view of Accounts and MoneyTransfers
|
||||||
@@ -28,10 +28,8 @@ The Query Service consists the following modules:
|
|||||||
|
|
||||||
# Deploying the application
|
# Deploying the application
|
||||||
|
|
||||||
These services can be deployed either as either separate standalone services using the Event Store server, or they can be deployed as a monolithic application for simpified integration testing.
|
These services can be deployed either as either separate standalone services using the Event Store server, or they can be deployed as a monolithic application for simplified integration testing.
|
||||||
|
|
||||||
The three services can also be packaged as a single monolithic web application in order to be used with the embedded Event Store:
|
The three services can also be packaged as a single monolithic web application in order to be used with the embedded Event Store:
|
||||||
|
|
||||||
* monolithic-service - all-in-one, monolithic packaging of the application
|
* monolithic-service - all-in-one, monolithic packaging of the application
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
4
java-spring/build-and-test-all-eventuate-local.sh
Executable file
4
java-spring/build-and-test-all-eventuate-local.sh
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
export EXTRA_INFRASTRUCTURE_SERVICES=cdcservice
|
||||||
|
../_build-and-test-all.sh -f docker-compose-eventuate-local.yml -P eventuateLocal=1 $*
|
||||||
48
java-spring/docker-compose-common.yml
Normal file
48
java-spring/docker-compose-common.yml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
apigateway:
|
||||||
|
image: java:openjdk-8u91-jdk
|
||||||
|
command: java -jar /app/api-gateway-service.jar --accounts.commandside.service.host=accountscommandside --transfers.commandside.service.host=transactionscommandside --accounts.queryside.service.host=accountsqueryside --customers.commandside.service.host=customerscommandside --customers.queryside.service.host=customersqueryside
|
||||||
|
environment:
|
||||||
|
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
|
||||||
|
accountscommandside:
|
||||||
|
image: java:openjdk-8u91-jdk
|
||||||
|
command: java -jar /app/accounts-command-side-service.jar
|
||||||
|
ports:
|
||||||
|
- "8085:8080"
|
||||||
|
|
||||||
|
transactionscommandside:
|
||||||
|
image: java:openjdk-8u91-jdk
|
||||||
|
command: java -jar /app/transactions-command-side-service.jar
|
||||||
|
ports:
|
||||||
|
- "8082:8080"
|
||||||
|
|
||||||
|
accountsqueryside:
|
||||||
|
image: java:openjdk-8u91-jdk
|
||||||
|
command: java -jar /app/accounts-query-side-service.jar
|
||||||
|
environment:
|
||||||
|
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
||||||
|
ports:
|
||||||
|
- "8081:8080"
|
||||||
|
|
||||||
|
customerscommandside:
|
||||||
|
image: java:openjdk-8u91-jdk
|
||||||
|
command: java -jar /app/customers-command-side-service.jar
|
||||||
|
ports:
|
||||||
|
- "8083:8080"
|
||||||
|
|
||||||
|
customersqueryside:
|
||||||
|
image: java:openjdk-8u91-jdk
|
||||||
|
command: java -jar /app/customers-query-side-service.jar
|
||||||
|
ports:
|
||||||
|
- "8084:8080"
|
||||||
|
environment:
|
||||||
|
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
||||||
|
|
||||||
|
mongodb:
|
||||||
|
image: mongo:3.0.4
|
||||||
|
hostname: mongodb
|
||||||
|
command: mongod --smallfiles
|
||||||
|
ports:
|
||||||
|
- "27017:27017"
|
||||||
@@ -1,11 +1,61 @@
|
|||||||
|
zookeeper:
|
||||||
|
image: eventuateio/eventuateio-local-zookeeper:0.6.0
|
||||||
|
ports:
|
||||||
|
- 2181:2181
|
||||||
|
- 2888:2888
|
||||||
|
- 3888:3888
|
||||||
|
|
||||||
|
|
||||||
|
kafka:
|
||||||
|
image: eventuateio/eventuateio-local-kafka:0.6.0
|
||||||
|
ports:
|
||||||
|
- 9092:9092
|
||||||
|
links:
|
||||||
|
- zookeeper
|
||||||
|
environment:
|
||||||
|
- ADVERTISED_HOST_NAME=${DOCKER_HOST_IP}
|
||||||
|
- KAFKA_HEAP_OPTS=-Xmx320m -Xms320m
|
||||||
|
- ZOOKEEPER_SERVERS=zookeeper:2181
|
||||||
|
|
||||||
|
mysql:
|
||||||
|
image: eventuateio/eventuateio-local-mysql:0.6.0
|
||||||
|
ports:
|
||||||
|
- 3306:3306
|
||||||
|
environment:
|
||||||
|
- MYSQL_ROOT_PASSWORD=rootpassword
|
||||||
|
- MYSQL_USER=mysqluser
|
||||||
|
- MYSQL_PASSWORD=mysqlpw
|
||||||
|
|
||||||
|
|
||||||
|
cdcservice:
|
||||||
|
image: eventuateio/eventuateio-local-cdc-service:0.6.0
|
||||||
|
ports:
|
||||||
|
- "8099:8080"
|
||||||
|
links:
|
||||||
|
- mysql
|
||||||
|
- kafka
|
||||||
|
- zookeeper
|
||||||
|
environment:
|
||||||
|
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate
|
||||||
|
SPRING_DATASOURCE_USERNAME: mysqluser
|
||||||
|
SPRING_DATASOURCE_PASSWORD: mysqlpw
|
||||||
|
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver
|
||||||
|
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092
|
||||||
|
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181
|
||||||
|
EVENTUATELOCAL_CDC_DB_USER_NAME: root
|
||||||
|
EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword
|
||||||
|
|
||||||
|
mongodb:
|
||||||
|
extends:
|
||||||
|
file: docker-compose-common.yml
|
||||||
|
service: mongodb
|
||||||
|
|
||||||
apigateway:
|
apigateway:
|
||||||
image: java:openjdk-8u91-jdk
|
extends:
|
||||||
working_dir: /app
|
file: docker-compose-common.yml
|
||||||
|
service: apigateway
|
||||||
volumes:
|
volumes:
|
||||||
- ./api-gateway-service/build/libs:/app
|
- ./api-gateway-service/build/libs:/app
|
||||||
command: java -jar /app/api-gateway-service.jar --accounts.commandside.service.host=accountscommandside --transfers.commandside.service.host=transactionscommandside --accounts.queryside.service.host=accountsqueryside --customers.commandside.service.host=customerscommandside --customers.queryside.service.host=customersqueryside
|
|
||||||
ports:
|
|
||||||
- "8080:8080"
|
|
||||||
links:
|
links:
|
||||||
- accountscommandside
|
- accountscommandside
|
||||||
- transactionscommandside
|
- transactionscommandside
|
||||||
@@ -13,117 +63,126 @@ apigateway:
|
|||||||
- customerscommandside
|
- customerscommandside
|
||||||
- customersqueryside
|
- customersqueryside
|
||||||
- mongodb
|
- mongodb
|
||||||
|
- mysql
|
||||||
|
- kafka
|
||||||
|
- zookeeper
|
||||||
environment:
|
environment:
|
||||||
SPRING_DATASOURCE_URL:
|
|
||||||
SPRING_DATASOURCE_USERNAME:
|
|
||||||
SPRING_DATASOURCE_PASSWORD:
|
|
||||||
SPRING_DATASOURCE_DRIVER_CLASS_NAME:
|
|
||||||
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS:
|
|
||||||
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING:
|
|
||||||
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME:
|
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD:
|
SPRING_DATASOURCE_USERNAME: mysqluser
|
||||||
|
SPRING_DATASOURCE_PASSWORD: mysqlpw
|
||||||
|
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver
|
||||||
|
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092
|
||||||
|
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181
|
||||||
|
EVENTUATELOCAL_CDC_DB_USER_NAME: root
|
||||||
|
EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword
|
||||||
|
|
||||||
accountscommandside:
|
accountscommandside:
|
||||||
image: java:openjdk-8u91-jdk
|
extends:
|
||||||
working_dir: /app
|
file: docker-compose-common.yml
|
||||||
|
service: accountscommandside
|
||||||
volumes:
|
volumes:
|
||||||
- ./accounts-command-side-service/build/libs:/app
|
- ./accounts-command-side-service/build/libs:/app
|
||||||
command: java -jar /app/accounts-command-side-service.jar
|
links:
|
||||||
ports:
|
- mysql
|
||||||
- "8085:8080"
|
- kafka
|
||||||
|
- zookeeper
|
||||||
environment:
|
environment:
|
||||||
SPRING_DATASOURCE_URL:
|
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate
|
||||||
SPRING_DATASOURCE_USERNAME:
|
SPRING_DATASOURCE_USERNAME: mysqluser
|
||||||
SPRING_DATASOURCE_PASSWORD:
|
SPRING_DATASOURCE_PASSWORD: mysqlpw
|
||||||
SPRING_DATASOURCE_DRIVER_CLASS_NAME:
|
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver
|
||||||
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS:
|
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092
|
||||||
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING:
|
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME:
|
EVENTUATELOCAL_CDC_DB_USER_NAME: root
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD:
|
EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword
|
||||||
|
|
||||||
|
|
||||||
transactionscommandside:
|
transactionscommandside:
|
||||||
image: java:openjdk-8u91-jdk
|
extends:
|
||||||
working_dir: /app
|
file: docker-compose-common.yml
|
||||||
|
service: transactionscommandside
|
||||||
volumes:
|
volumes:
|
||||||
- ./transactions-command-side-service/build/libs:/app
|
- ./transactions-command-side-service/build/libs:/app
|
||||||
command: java -jar /app/transactions-command-side-service.jar
|
links:
|
||||||
ports:
|
- mysql
|
||||||
- "8082:8080"
|
- kafka
|
||||||
|
- zookeeper
|
||||||
environment:
|
environment:
|
||||||
SPRING_DATASOURCE_URL:
|
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate
|
||||||
SPRING_DATASOURCE_USERNAME:
|
SPRING_DATASOURCE_USERNAME: mysqluser
|
||||||
SPRING_DATASOURCE_PASSWORD:
|
SPRING_DATASOURCE_PASSWORD: mysqlpw
|
||||||
SPRING_DATASOURCE_DRIVER_CLASS_NAME:
|
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver
|
||||||
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS:
|
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092
|
||||||
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING:
|
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME:
|
EVENTUATELOCAL_CDC_DB_USER_NAME: root
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD:
|
EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
accountsqueryside:
|
accountsqueryside:
|
||||||
image: java:openjdk-8u91-jdk
|
extends:
|
||||||
working_dir: /app
|
file: docker-compose-common.yml
|
||||||
|
service: accountsqueryside
|
||||||
volumes:
|
volumes:
|
||||||
- ./accounts-query-side-service/build/libs:/app
|
- ./accounts-query-side-service/build/libs:/app
|
||||||
command: java -jar /app/accounts-query-side-service.jar
|
|
||||||
ports:
|
|
||||||
- "8081:8080"
|
|
||||||
links:
|
links:
|
||||||
- mongodb
|
- mongodb
|
||||||
|
- mysql
|
||||||
|
- kafka
|
||||||
|
- zookeeper
|
||||||
environment:
|
environment:
|
||||||
SPRING_DATASOURCE_URL:
|
|
||||||
SPRING_DATASOURCE_USERNAME:
|
|
||||||
SPRING_DATASOURCE_PASSWORD:
|
|
||||||
SPRING_DATASOURCE_DRIVER_CLASS_NAME:
|
|
||||||
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS:
|
|
||||||
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
||||||
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING:
|
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME:
|
SPRING_DATASOURCE_USERNAME: mysqluser
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD:
|
SPRING_DATASOURCE_PASSWORD: mysqlpw
|
||||||
|
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver
|
||||||
|
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092
|
||||||
|
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181
|
||||||
|
EVENTUATELOCAL_CDC_DB_USER_NAME: root
|
||||||
|
EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword
|
||||||
|
|
||||||
|
|
||||||
customerscommandside:
|
customerscommandside:
|
||||||
image: java:openjdk-8u91-jdk
|
extends:
|
||||||
working_dir: /app
|
file: docker-compose-common.yml
|
||||||
|
service: customerscommandside
|
||||||
volumes:
|
volumes:
|
||||||
- ./customers-command-side-service/build/libs:/app
|
- ./customers-command-side-service/build/libs:/app
|
||||||
command: java -jar /app/customers-command-side-service.jar
|
links:
|
||||||
ports:
|
- mysql
|
||||||
- "8083:8080"
|
- kafka
|
||||||
|
- zookeeper
|
||||||
environment:
|
environment:
|
||||||
SPRING_DATASOURCE_URL:
|
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate
|
||||||
SPRING_DATASOURCE_USERNAME:
|
SPRING_DATASOURCE_USERNAME: mysqluser
|
||||||
SPRING_DATASOURCE_PASSWORD:
|
SPRING_DATASOURCE_PASSWORD: mysqlpw
|
||||||
SPRING_DATASOURCE_DRIVER_CLASS_NAME:
|
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver
|
||||||
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS:
|
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092
|
||||||
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING:
|
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME:
|
EVENTUATELOCAL_CDC_DB_USER_NAME: root
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD:
|
EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword
|
||||||
|
|
||||||
customersqueryside:
|
customersqueryside:
|
||||||
image: java:openjdk-8u91-jdk
|
extends:
|
||||||
working_dir: /app
|
file: docker-compose-common.yml
|
||||||
|
service: customersqueryside
|
||||||
volumes:
|
volumes:
|
||||||
- ./customers-query-side-service/build/libs:/app
|
- ./customers-query-side-service/build/libs:/app
|
||||||
command: java -jar /app/customers-query-side-service.jar
|
|
||||||
ports:
|
|
||||||
- "8084:8080"
|
|
||||||
links:
|
links:
|
||||||
- mongodb
|
- mongodb
|
||||||
|
- mysql
|
||||||
|
- kafka
|
||||||
|
- zookeeper
|
||||||
environment:
|
environment:
|
||||||
SPRING_DATASOURCE_URL:
|
|
||||||
SPRING_DATASOURCE_USERNAME:
|
|
||||||
SPRING_DATASOURCE_PASSWORD:
|
|
||||||
SPRING_DATASOURCE_DRIVER_CLASS_NAME:
|
|
||||||
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS:
|
|
||||||
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING:
|
|
||||||
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_USER_NAME:
|
environment:
|
||||||
EVENTUATELOCAL_EMBEDDED_CDC_DB_PASSWORD:
|
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
||||||
|
SPRING_DATASOURCE_URL: jdbc:mysql://mysql/eventuate
|
||||||
mongodb:
|
SPRING_DATASOURCE_USERNAME: mysqluser
|
||||||
image: mongo:3.0.4
|
SPRING_DATASOURCE_PASSWORD: mysqlpw
|
||||||
hostname: mongodb
|
SPRING_DATASOURCE_DRIVER_CLASS_NAME: com.mysql.jdbc.Driver
|
||||||
command: mongod --smallfiles
|
EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS: kafka:9092
|
||||||
ports:
|
EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING: zookeeper:2181
|
||||||
- "27017:27017"
|
EVENTUATELOCAL_CDC_DB_USER_NAME: root
|
||||||
|
EVENTUATELOCAL_CDC_DB_PASSWORD: rootpassword
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
apigateway:
|
apigateway:
|
||||||
image: java:openjdk-8u91-jdk
|
extends:
|
||||||
working_dir: /app
|
file: docker-compose-common.yml
|
||||||
|
service: apigateway
|
||||||
volumes:
|
volumes:
|
||||||
- ./api-gateway-service/build/libs:/app
|
- ./api-gateway-service/build/libs:/app
|
||||||
command: java ${JAVA_OPTS} -jar /app/api-gateway-service.jar --accounts.commandside.service.host=accountscommandside --transfers.commandside.service.host=transactionscommandside --accounts.queryside.service.host=accountsqueryside --customers.commandside.service.host=customerscommandside --customers.queryside.service.host=customersqueryside
|
|
||||||
ports:
|
|
||||||
- "8080:8080"
|
|
||||||
links:
|
links:
|
||||||
- accountscommandside
|
- accountscommandside
|
||||||
- transactionscommandside
|
- transactionscommandside
|
||||||
@@ -14,80 +12,66 @@ apigateway:
|
|||||||
- customersqueryside
|
- customersqueryside
|
||||||
- mongodb
|
- mongodb
|
||||||
environment:
|
environment:
|
||||||
EVENTUATE_API_KEY_ID:
|
EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID}
|
||||||
EVENTUATE_API_KEY_SECRET:
|
EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET}
|
||||||
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
|
||||||
|
|
||||||
accountscommandside:
|
accountscommandside:
|
||||||
image: java:openjdk-8u91-jdk
|
extends:
|
||||||
working_dir: /app
|
file: docker-compose-common.yml
|
||||||
|
service: accountscommandside
|
||||||
volumes:
|
volumes:
|
||||||
- ./accounts-command-side-service/build/libs:/app
|
- ./accounts-command-side-service/build/libs:/app
|
||||||
command: java ${JAVA_OPTS} -jar /app/accounts-command-side-service.jar
|
|
||||||
ports:
|
|
||||||
- "8085:8080"
|
|
||||||
environment:
|
environment:
|
||||||
EVENTUATE_API_KEY_ID:
|
EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID}
|
||||||
EVENTUATE_API_KEY_SECRET:
|
EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET}
|
||||||
|
|
||||||
transactionscommandside:
|
transactionscommandside:
|
||||||
image: java:openjdk-8u91-jdk
|
extends:
|
||||||
working_dir: /app
|
file: docker-compose-common.yml
|
||||||
|
service: transactionscommandside
|
||||||
volumes:
|
volumes:
|
||||||
- ./transactions-command-side-service/build/libs:/app
|
- ./transactions-command-side-service/build/libs:/app
|
||||||
command: java ${JAVA_OPTS} -jar /app/transactions-command-side-service.jar
|
|
||||||
ports:
|
|
||||||
- "8082:8080"
|
|
||||||
environment:
|
environment:
|
||||||
EVENTUATE_API_KEY_ID:
|
EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID}
|
||||||
EVENTUATE_API_KEY_SECRET:
|
EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET}
|
||||||
|
|
||||||
|
|
||||||
accountsqueryside:
|
accountsqueryside:
|
||||||
image: java:openjdk-8u91-jdk
|
extends:
|
||||||
working_dir: /app
|
file: docker-compose-common.yml
|
||||||
|
service: accountsqueryside
|
||||||
volumes:
|
volumes:
|
||||||
- ./accounts-query-side-service/build/libs:/app
|
- ./accounts-query-side-service/build/libs:/app
|
||||||
command: java ${JAVA_OPTS} -jar /app/accounts-query-side-service.jar
|
|
||||||
ports:
|
|
||||||
- "8081:8080"
|
|
||||||
links:
|
links:
|
||||||
- mongodb
|
- mongodb
|
||||||
environment:
|
environment:
|
||||||
EVENTUATE_API_KEY_ID:
|
EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID}
|
||||||
EVENTUATE_API_KEY_SECRET:
|
EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET}
|
||||||
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
|
||||||
|
|
||||||
customerscommandside:
|
customerscommandside:
|
||||||
image: java:openjdk-8u91-jdk
|
extends:
|
||||||
working_dir: /app
|
file: docker-compose-common.yml
|
||||||
|
service: customerscommandside
|
||||||
volumes:
|
volumes:
|
||||||
- ./customers-command-side-service/build/libs:/app
|
- ./customers-command-side-service/build/libs:/app
|
||||||
command: java ${JAVA_OPTS} -jar /app/customers-command-side-service.jar
|
|
||||||
ports:
|
|
||||||
- "8083:8080"
|
|
||||||
environment:
|
environment:
|
||||||
EVENTUATE_API_KEY_ID:
|
EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID}
|
||||||
EVENTUATE_API_KEY_SECRET:
|
EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET}
|
||||||
|
|
||||||
customersqueryside:
|
customersqueryside:
|
||||||
|
extends:
|
||||||
|
file: docker-compose-common.yml
|
||||||
|
service: customersqueryside
|
||||||
image: java:openjdk-8u91-jdk
|
image: java:openjdk-8u91-jdk
|
||||||
working_dir: /app
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./customers-query-side-service/build/libs:/app
|
- ./customers-query-side-service/build/libs:/app
|
||||||
command: java ${JAVA_OPTS} -jar /app/customers-query-side-service.jar
|
|
||||||
ports:
|
|
||||||
- "8084:8080"
|
|
||||||
links:
|
links:
|
||||||
- mongodb
|
- mongodb
|
||||||
environment:
|
environment:
|
||||||
EVENTUATE_API_KEY_ID:
|
EVENTUATE_API_KEY_ID: ${EVENTUATE_API_KEY_ID}
|
||||||
EVENTUATE_API_KEY_SECRET:
|
EVENTUATE_API_KEY_SECRET: ${EVENTUATE_API_KEY_SECRET}
|
||||||
SPRING_DATA_MONGODB_URI: mongodb://mongodb/mydb
|
|
||||||
|
|
||||||
mongodb:
|
mongodb:
|
||||||
image: mongo:3.0.4
|
extends:
|
||||||
hostname: mongodb
|
file: docker-compose-common.yml
|
||||||
command: mongod --smallfiles
|
service: mongodb
|
||||||
ports:
|
|
||||||
- "27017:27017"
|
|
||||||
|
|||||||
@@ -7,4 +7,3 @@ springBootVersion=1.3.5.RELEASE
|
|||||||
|
|
||||||
eventuateClientVersion=0.10.0.RELEASE
|
eventuateClientVersion=0.10.0.RELEASE
|
||||||
eventuateLocalVersion=0.4.0.RELEASE
|
eventuateLocalVersion=0.4.0.RELEASE
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
|
|
||||||
docker run --link javaspring_mongodb_1:mongodb -i -t mongo:3.0.4 /usr/bin/mongo --host mongodb
|
docker run --rm --link javaspring_mongodb_1:mongodb -i -t mongo:3.0.4 /usr/bin/mongo --host mongodb
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ dependencies {
|
|||||||
compile "org.springframework.boot:spring-boot-starter-actuator"
|
compile "org.springframework.boot:spring-boot-starter-actuator"
|
||||||
|
|
||||||
compile "io.eventuate.client.java:eventuate-client-java-http-stomp-spring:$eventuateClientVersion"
|
compile "io.eventuate.client.java:eventuate-client-java-http-stomp-spring:$eventuateClientVersion"
|
||||||
|
compile project(":common-swagger")
|
||||||
|
|
||||||
testCompile project(":testutil")
|
testCompile project(":testutil")
|
||||||
testCompile "org.springframework.boot:spring-boot-starter-test"
|
testCompile "org.springframework.boot:spring-boot-starter-test"
|
||||||
@@ -27,4 +28,4 @@ task copyWebStatic(type: Copy) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
jar.dependsOn(copyWebStatic)
|
jar.dependsOn(copyWebStatic)
|
||||||
bootRun.dependsOn(copyWebStatic)
|
bootRun.dependsOn(copyWebStatic)
|
||||||
|
|||||||
21
java-spring/set-env.sh
Normal file
21
java-spring/set-env.sh
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
if [ -z "$DOCKER_HOST_IP" ] ; then
|
||||||
|
if [ -z "$DOCKER_HOST" ] ; then
|
||||||
|
export DOCKER_HOST_IP=`hostname`
|
||||||
|
else
|
||||||
|
echo using ${DOCKER_HOST?}
|
||||||
|
XX=${DOCKER_HOST%\:*}
|
||||||
|
export DOCKER_HOST_IP=${XX#tcp\:\/\/}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo DOCKER_HOST_IP is $DOCKER_HOST_IP
|
||||||
|
|
||||||
|
export SPRING_DATASOURCE_URL=jdbc:mysql://${DOCKER_HOST_IP}/eventuate
|
||||||
|
export SPRING_DATASOURCE_USERNAME=mysqluser
|
||||||
|
export SPRING_DATASOURCE_PASSWORD=mysqlpw
|
||||||
|
export SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.jdbc.Driver
|
||||||
|
export EVENTUATELOCAL_KAFKA_BOOTSTRAP_SERVERS=$DOCKER_HOST_IP:9092
|
||||||
|
export EVENTUATELOCAL_CDC_DB_USER_NAME=root
|
||||||
|
export EVENTUATELOCAL_CDC_DB_PASSWORD=rootpassword
|
||||||
|
export EVENTUATELOCAL_ZOOKEEPER_CONNECTION_STRING=$DOCKER_HOST_IP:2181
|
||||||
|
|
||||||
7
java-spring/show-urls.sh
Executable file
7
java-spring/show-urls.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
IP=$(docker-machine ip default)
|
||||||
|
|
||||||
|
echo Accounts command-side service = http://${IP}:8080/swagger-ui.html
|
||||||
|
echo Money Transfers command-side service = http://${IP}:8082/swagger-ui.html
|
||||||
|
echo Accounts query-side service = http://${IP}:8081/swagger-ui.html
|
||||||
@@ -13,6 +13,7 @@ while [[ "$done" = false ]]; do
|
|||||||
done=true
|
done=true
|
||||||
else
|
else
|
||||||
done=false
|
done=false
|
||||||
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if [[ "$done" = true ]]; then
|
if [[ "$done" = true ]]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user