Skip to content

Email Microsservice for a email service application with RabbitMQ and Spring Framewrok

License

Notifications You must be signed in to change notification settings

Samuel-Ricardo/ems_email

Repository files navigation

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 clone "git@github.com:Samuel-Ricardo/ems_email.git"

Make Pull

  $ 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

  # 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

  #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:


- Samuel Ricardo

About

Email Microsservice for a email service application with RabbitMQ and Spring Framewrok

Resources

License

Stars

Watchers

Forks

Releases

No releases published