Important: This repository is no longer actively maintained.
This repository contains a set of templates to help you create a Java Spring Boot microservices architecture with MongoDB.
In this repo you'll find:
- A config-server on port 8888
- A service-registry on port 8761
- An api-gateway on port 8080
- Two microservices:
- company-service on port 8081
- employee-service on port 8082
- Docker (for local ephemeral MongoDB nodes or you can use MongoDB Atlas)
- Java 21
- Maven 3.6.3+
Microservices are supposed to be independent of each others. For this reason, we need two MongoDB instances: one for each microservice.
With Docker
The following script will start two local single node replica set nodes on port 27017 and 27018.
./1_docker-start-mongodb.shWhen you are done:
./3_docker-stop-mongodb.shWith MongoDB Atlas
You can create two tests clusters on MongoDB Atlas and overwrite the default MongoDB URIs before starting the two microservices.
For the company_service use:
export MONGODB_URI_1="ATLAS_URI_HERE"For the employee_service use:
export MONGODB_URI_2="ATLAS_URI_HERE"Open five terminals: one for each folder.
Before we start the microservices, we need to retrieve their config repository:
git clone [email protected]:mongodb-developer/microservices-architecture-mongodb-config-repo.gitUpdate the file config-server/src/main/resources/application.properties so this property points to the config repo.
spring.cloud.config.server.git.uri=${HOME}/Work/microservices-architecture-mongodb-config-repoNow we can start the Spring Boot projects.
Start with the config-server as the microservices need this one running to be able to retrieve their configuration.
cd config-server
mvn clean spring-boot:runcd service-registry
mvn clean spring-boot:runcd company-service
export MONGODB_URI_1="ATLAS_URI_HERE" # optional
mvn clean spring-boot:runcd employee-service
export MONGODB_URI_2="ATLAS_URI_HERE" # optional
mvn clean spring-boot:runcd api-gateway
mvn clean spring-boot:runThe api-gateway running on port 8080 can distribute the queries to the relevant microservices.
You can test all the APIs using the script:
./2_api-tests.shNote that the script is only targeting the port 8080 of the api-gateway.