Welcome to the Microservice Monorepo! This repository contains multiple microservices along with supporting services to create a complete microservices architecture. Below is a brief overview of the structure, technologies used, and instructions for setting up and running the services.
- Microservices
- Supporting Services
- Technologies Used
- Setup and Running Instructions
- Request Tracing with Zipkin
- Asynchronous Communication with RabbitMQ
Handles job-related operations such as posting jobs, searching jobs, and managing job applications.
Manages company information, including company profiles, and listings of available jobs from companies.
Allows users to leave reviews about companies and jobs, providing valuable feedback for other users.
A service registry for discovering and registering microservices, enabling load balancing and failover.
A centralized configuration server to manage external properties for applications across all environments.
Acts as an entry point for all client requests, routing them to appropriate microservices and providing security, monitoring, and logging.
- Spring Boot: Framework for building the microservices.
- Eureka: Service registry for service discovery.
- Config Server: Centralized configuration management.
- API Gateway: Routing and filtering client requests.
- Zipkin: Distributed tracing system for request tracking.
- RabbitMQ: Message broker for facilitating asynchronous communication between microservices.
- Java 17 or higher
- Maven
- Docker (for running RabbitMQ and Zipkin)
-
Clone the Repository
git clone https://github.com/smit-joshi814/Microservices.git cd microservice-monorepo
-
Start RabbitMQ and Zipkin using Docker
docker run -d -p 9411:9411 openzipkin/zipkin docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management
-
Build and Run the Config Server
cd config-server mvn clean install mvn spring-boot:run
-
Build and Run the Eureka Service Registry
cd eureka-service-registry mvn clean install mvn spring-boot:run
-
Build and Run the API Gateway
cd api-gateway mvn clean install mvn spring-boot:run
-
Build and Run the Jobs Microservice
cd jobs-microservice mvn clean install mvn spring-boot:run
-
Build and Run the Company Microservice
cd company-microservice mvn clean install mvn spring-boot:run
-
Build and Run the Review Microservice
cd review-microservice mvn clean install mvn spring-boot:run
Zipkin is used for distributed tracing, allowing you to track the flow of requests across microservices. Zipkin will collect and visualize trace data, helping you diagnose latency issues and understand the behavior of the microservices.
To access the Zipkin dashboard:
http://localhost:9411
RabbitMQ is used to handle asynchronous communication between microservices by providing message queues. This helps in decoupling services and improving the scalability and reliability of the system.
To access the RabbitMQ management interface:
http://localhost:15672
(Default username: guest
, password: guest
)
For any questions or suggestions, please contact [https://www.linkedin.com/in/smit-joshi814/].
Happy Coding! 🚀