Этот проект представляет собой сервис, который использует PostgreSQL и NATS, запущенные через Docker Compose, для обработки и хранения данных. Проект также включает простой интерфейс для отображения полученных данных по ID заказа.
- Подключение и подписка на канал в NATS-Streaming.
- Запись полученных данных в базу данных PostgreSQL.
- Кэширование полученных данных in-memory в сервисе.
- Восстановление кэша из базы данных в случае падения сервиса.
- Запуск HTTP-сервера для предоставления данных по ID из кэша.
- Простейший интерфейс для отображения данных по ID заказа.
Для запуска приложения необходимо выполнить следующие шаги:
-
Убедитесь, что у вас установлены Go, Docker compose.
-
Задайте env параметры подключения к бд, пример можете посмотреть в
.env.example -
Запустите приложение с помощью команды:
docker compose up
go run cmd/main/main.goдля запуска продюсера:
go run cmd/producer/producer.goдля запуска интерфейса откройте web/index.html в браузере
В файле docker-compose.yml содержатся следующие сервисы:
- postgres: Этот сервис использует образ Docker
postgres:15.3. Он настраивает контейнер базы данных PostgreSQL и связывает каталог./volumes/pgdataна хост-машине с папкой/var/lib/postgresql/dataвнутри контейнера. Данные базы данных будут храниться в указанном каталоге на хост-машине, обеспечивая сохранность данных. Сервис также использует файл окружения.envдля загрузки переменных окружения, если он присутствует. Сервис доступен на порту5555на хост-машине, который отображается на порт5432внутри контейнера. - nats: Этот сервис использует образ Docker
nats-streaming:latest. Он настраивает контейнер сервера NATS Streaming и открывает порты4222и8222на хост-машине, которые отображаются на соответствующие порты внутри контейнера.