Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/monstrikwho/nodejs-rabbitmq
Асинхронная обработка http запросов
https://github.com/monstrikwho/nodejs-rabbitmq
docker expressjs microservices nodejs pug rabbitmq
Last synced: 2 days ago
JSON representation
Асинхронная обработка http запросов
- Host: GitHub
- URL: https://github.com/monstrikwho/nodejs-rabbitmq
- Owner: monstrikwho
- Created: 2023-12-22T12:40:03.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2023-12-23T17:43:17.000Z (about 1 year ago)
- Last Synced: 2024-11-06T18:00:09.316Z (about 2 months ago)
- Topics: docker, expressjs, microservices, nodejs, pug, rabbitmq
- Language: JavaScript
- Homepage:
- Size: 161 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Асинхронная обработка http запросов
### Проект создан в учебных и демонстрационных целях.
### [Скриншоты](./assets/README.md)### Описание проекта:
• Express.js предоставляет форму для отправки HTTP POST запроса, с последующим его приемом.• Запрос ретранслируется в [sender](./src/services/sender.js), где формируется задание в очередь ``tasks``, и поток [sender](./src/services/sender.js) ставиться на ожидание результата, который должен прийти в очередь ``res_tasks``.
• Для обработки заданий паралельно с сервером запускается поток [receiver](./src/services/receiver.js).
• После завершения обработки заданий из очереди ``tasks`` потоком [receiver](./src/services/receiver.js) результат направляется в очередь ``res_tasks``
• Поток [sender](./src/services/sender.js), находящийся на ожидании результата из очереди ``res_tasks``, возвращает результат в виде ответа для POST запроса на страницу пользователя.
• Реализован endpoint POST ``/api/tasks``, который принимает JSON с ключом number
**Пример запроса:**
```
curl --location 'http://localhost:5000/api/tasks' \
--header 'Content-Type: application/json' \
--data '{
"number": 123
}'
```
Ответ:
```
{
"status": 200,
"data": 246
}
```
### Запускаем проект локально
1. Убедитесь, что у вас установлен [Node.js](https://nodejs.org/en), [Erlang](https://www.erlang.org/downloads) и [RabbitMQ](https://www.rabbitmq.com/download.html)
2. Склонируйте репозиторий:
```
git clone https://github.com/monstrikwho/nodejs-rabbitmq.git
```
3. Перейдите в каталог проекта:
```
cd nodejs-rabbitmq
```
4. Установите зависимости для основного проекта:
```
npm install
```
5. Запустите проект
```
npm run dev
```
6. Откройте страницу в браузере [localhost](http://localhost:5000)
### Разворачиваем RabbitMQ
````js
docker run -d --hostname rmq --name rabbit-server -p 8080:15672 -p 5672:5672 rabbitmq:3-management
````
### Разворачиваем приложение
```
docker build -t microservices .
```
```
docker run --name node-mic -p 5000:5000 -itd microservices
```