Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/19eb/microservices-base-rabbitmq
Nodejs project on microservices using RabbitMQ as messaging queue
https://github.com/19eb/microservices-base-rabbitmq
amqp api architecture express messaging-queue microservice microservices microservices-architecture node-js nodejs rabbitmq rest typescript
Last synced: 2 days ago
JSON representation
Nodejs project on microservices using RabbitMQ as messaging queue
- Host: GitHub
- URL: https://github.com/19eb/microservices-base-rabbitmq
- Owner: 19EB
- License: mit
- Created: 2022-12-07T14:20:50.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2022-12-09T08:00:37.000Z (almost 2 years ago)
- Last Synced: 2024-03-22T10:29:47.596Z (8 months ago)
- Topics: amqp, api, architecture, express, messaging-queue, microservice, microservices, microservices-architecture, node-js, nodejs, rabbitmq, rest, typescript
- Language: TypeScript
- Homepage:
- Size: 49.8 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# microservices-base-rabbitmqBasic microservices project that includes a gateway (api-gateway) and 3 microservices (user/product/client) and a messaging queue
This variation utilizes RabbitMQ as the messaging queue so if one microservice goes down, it will receive messages when it gets back up.
### Prerequisites
- Install [Node.js](https://nodejs.org/en/)
- Install [RabbitMQ](https://www.rabbitmq.com/) or run it in a Docker container with the included compose file. Alternatively you can use their cloud solution at [CloudAMQP](https://www.cloudamqp.com/)
### Installing
- Clone the repository
```
git clone https://github.com/19EB/microservices-base
```- Install dependencies on api-gateway
```
cd api-gatewaynpm install
```
- Install dependencies on each microservice (user, product and client)
```
cd services/npm install
```### Environment variables
This project uses the following environment variables:
##### api-gateway
```
# Port
PORT=8000# User service
USER_SERVICE_URL='http://localhost:8001'# Client service
CLIENT_SERVICE_URL='http://localhost:8002'# Product service
PRODUCT_SERVICE_URL='http://localhost:8003'
```##### microservice
```
# Database
DB=''# Service port
PORT=8001# RabbitMQ configuration (use local or cloud url here)
MESSAGE_BROKER_URL=''
```### Running the project
- If you plan on using Docker for running RabbitMQ, I have included "rabbitmq" folder that contains the docker-compose file.
```
cd rabbitmq
docker-compose up -d
```- Start each microservice from its own directory
Development mode
```
cd services/npm run dev
```
Production mode
```
cd services/npm start
```- Start the api-gateway
```
cd api-gatewaynpm start
or
npm run dev
```
Navigate to `http://localhost:8000`### Endpoints
The project has couple endpoints to ping each other and one normal endpoint.
`http://localhost:8000/user/list`
`http://localhost:8000/user/ping-client`
`http://localhost:8000/user/ping-product`
`http://localhost:8000/client/list`
`http://localhost:8000/client/ping-user`
`http://localhost:8000/client/ping-product`
`http://localhost:8000/product/list`
`http://localhost:8000/product/ping-user`
`http://localhost:8000/product/ping-client`
## License
This project is licensed under the MIT License