- Docker – Orchestrates services
- Express.js – API
- RabbitMQ – Queue system
- Nodemailer – Email sending
- TypeScript – Type-safety
- ✅ Email queue with RabbitMQ
- 📬 Email sending with Nodemailer
- 🔧 Microservice architecture
- 🐳 Easily deployable with Docker Compose
rabbitmq- Message broker used as queue backboneapi-service- Accepts email requests and publishes to queueemail-service- Consumes jobs from queue and sends emails
git clone https://github.com/luna-zx/mail-queuing-microservice.gitdocker-compose.yml :
rabbitmq:
image: rabbitmq:3-management
ports:
- "5672:5672"
- "15672:15672"
environment:
RABBITMQ_DEFAULT_USER: your_uname # your RabbitMQ user
RABBITMQ_DEFAULT_PASS: your_pass # your RabbitMQ passapi-service/.env :
API_PORT = # your api port
RABBITMQ_URL = amqp://your_uname:your_pass@rabbitmqemail-service/.env :
SMTP_HOST = # your SMTP HOST
SMTP_PORT = # your SMTP PORT
SMTP_USER = # your SMTP USER
SMTP_PASS = # your SMTP PASSWORD
RABBITMQ_URL = amqp://your_uname:your_pass@rabbitmqDocker Compose :
docker compose up --buildcurl -X POST http://localhost:your_api_port/send-email \
-H "Content-Type: application/json" \
-d '{ "to": "test@gmail.com", "subject": "Hello from sigma boy", "html": "<p>Test</p>" }'Or :
axios.post("http://localhost:your_api_port/send-email", {
to: "test@gmail.com",
subject: "Hello from sigma boy",
html: "<p>Test</p>"
})