Customer Service, providing REST endpoints for creating/updating/retrieving/deleting customers. It also publishes three types of events to order-service:
-
- CustomerWasCreated
-
- CustomerWasUpdated
-
- CustomerWasDeleted
-
A. Prerequisites
-
- Windows/Linux based operating system
-
- Java 11
-
- Dapr CLI (follow instructions on https://docs.dapr.io/getting-started/)
-
- Docker (follow instructions on https://docs.docker.com/get-docker/)
-
- Database has been created or assuming using an in-memory database for testing purpose.
-
-
B. Getting Started & Run the Application
-
- Clone the git repo in to your local directory from the github repository
-
- Open the command prompt and navigate to the main project directory.
-
- Copy mssql.jks file located under rest-controller submodule to under "tmp" directory on your local env. Empty file merely for local testing purpose.
-
-
** Run Application on Local Docker Containers**
-
- Build the application:
mvn clean install
- Build the application:
-
- Run the application with Dapr as sidecar WITH docker container:
docker-compose up --build
- Run the application with Dapr as sidecar WITH docker container:
-
- Tear down the app after running the app (warning: this will delete the contents of your app's database):
docker-compose down
- Tear down the app after running the app (warning: this will delete the contents of your app's database):
-
- If you don't have Docker installed locally, run the application with Dapr as sidecar locally WITHOUT docker container:
dapr run --components-path ./dapr-components --app-id customer-service --app-port 9100 -- java -jar rest-controller/target/customer-service-0.0.1-SNAPSHOT-exec.jar -p 9100
- If you don't have Docker installed locally, run the application with Dapr as sidecar locally WITHOUT docker container:
-
-
C. Project Code Modules
config
- Spring Configuration classes for all of the modules.dapr-components
- dapr components files for pubsub.data
- Contains domain data shared with other applications such as rest-api, events etc.persistence
- Responsible for hosting the Entities and Repositories for the database.qa
- Integration/Functional Tests.rest-controller
- REST Endpoints for the application.service
- Contains business logic for the application.
-
D. Application Launch
For testing purpose, we are using EMQ X MQTT public broker https://www.emqx.io/mqtt/public-mqtt5-broker.
To run Pact testing, please ensure to update the root pom's pact broker configuration (in placeholder currently) to your desired values.