https://github.com/samuel-ricardo/ems_email
Email Microsservice for a email service application with RabbitMQ and Spring Framewrok
https://github.com/samuel-ricardo/ems_email
Last synced: 2 months ago
JSON representation
Email Microsservice for a email service application with RabbitMQ and Spring Framewrok
- Host: GitHub
- URL: https://github.com/samuel-ricardo/ems_email
- Owner: Samuel-Ricardo
- License: mit
- Created: 2023-12-05T02:33:31.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-13T17:21:38.000Z (over 2 years ago)
- Last Synced: 2025-01-14T12:43:46.787Z (over 1 year ago)
- Language: Java
- Size: 4.82 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Email Microservice - [EMAIL]
🚀 🟧 Email Microservice 🟧 🚀
Email Microservice of an Email Messenger System based on @MichelliBrito's classes
|
Overview |
Technologies |
Project |
Routes |
Run |
Author |
#
| 🛰️ About:
This application is an implementation of a Microservices Architecture using RabbitMQ for queue communication and the best practices of Clean Architecture, SOLID and DDD, all documented. Use Docker to handle the entire system structure.
:octocat: | User Microservice: [ https://github.com/Samuel-Ricardo/ems_user ]
| 🏗️ - Technologies and Concepts Studied:
- Spring Framework
- RabbitMQ
- PostgreSQL
- Docker
- Microservice
- Communication Between Microservices
- Email SMTP
- Maven
- REST
- Swagger
- Validation
- Lombok
- Environment
- Clean Architeture
- DDD
- JUnit
- H2 Database
- Error Handler
> Among Others...
#
💻 | Application:

Giving an overview, this architecture is divided into User Microservice and Email Microservice, each with its own databases, communication between them occurs through a broker which in this case is based on asynchronous queues managed by RabbitMQ
🕺 | User
:shipit: | Repository: [ https://github.com/Samuel-Ricardo/ems_user ]
The main function of User Microservice is to list and register users in a database. When a user is saved in this MS, it publishes this event to the broker.
📧 | Email
:shipit: | Repository: [ https://github.com/Samuel-Ricardo/ems_email ]
The main function of the Email Microservice is to send a welcome email to new users, for this it listens to the broker, when a created user event is published this MS consumes this event and sends an email to this new created user welcoming .
📮 | Broker

The broker is an intermediary between microservices, it receives events and store in a Queue Data Structure that is triggered and can be consumed by other microservices that are waiting for it to react.
🌱 | Example
>
>
>
> 
#
👨💻 | How to use
### Open your Git Terminal and clone this repository
```git
$ git clone "git@github.com:Samuel-Ricardo/ems_email.git"
```
### Make Pull
```git
$ git pull "git@github.com:Samuel-Ricardo/ems_email.git"
```
This application use `Docker` so you dont need to install and cofigurate anything other than docker on your machine.
Navigate to project folder and run it using `docker-compose`
```bash
# After setup docker environment just run this commmand on root project folder:
$ docker-compose up --build # For First Time run this command
$ docker-compose up # to run project
```
```bash
#Apps Running on:
$ USER: http://localhost:8080 - [MICROSERVICE] | [USER]
$ EMAIL: http://localhost:8081 - [MICROSERVICE] | [EMAIL]
$ SWAGGER: http://localhost:8080/swagger-ui/index.html - [DOCS]
$ PostgreSQL: http://localhost:5431 - [DATABASE] | [USER]
$ PostgreSQL: http://localhost:5432 - [DATABASE] | [EMAIL]
$ PGAdmin: http://localhost:5050 - [DATABASE] | [VIEW]
$ RabbitMQ: :5672 - [BROKER]
$ RabbitMQ: http://localhost:15672 - [BROKER] | [VIEW]
See more: docker-compose.yaml
```
#
:octocat: | Author: