customer-service
customer-service copied to clipboard
Spring Boot microservice to demo integration with Dapr for event-driven, Pact for consumer-driven contract testing, Cucumber BDD, Liquibase, etc.
Customer Service
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
- web: http://localhost:9100/swagger-ui.html
PubSub
For testing purpose, we are using EMQ X MQTT public broker https://www.emqx.io/mqtt/public-mqtt5-broker.
Pact testing
To run Pact testing, please ensure to update the root pom's pact broker configuration (in placeholder currently) to your desired values.