An open API service indexing awesome lists of open source software.

https://github.com/aventhis/go-order-service

сервис с Kafka, PostgreSQL, кешем
https://github.com/aventhis/go-order-service

Last synced: 6 months ago
JSON representation

сервис с Kafka, PostgreSQL, кешем

Awesome Lists containing this project

README

          

# Go Order Service

Демонстрационный микросервис на Go для обработки заказов с использованием Kafka, PostgreSQL и in-memory кеша.

## Описание

Сервис получает данные о заказах из Kafka, сохраняет их в PostgreSQL и кэширует в памяти для быстрого доступа. Есть HTTP API и простой веб-интерфейс для просмотра заказа по ID.

---

## Быстрый старт

## ⚙️ Настройка переменных окружения

1. Скопируйте `.env.example` в `.env`:
```bash
cp .env.example .env

### 1. Клонируйте репозиторий

```bash
git clone git@github.com:aventhis/go-order-service.git
cd go-order-service
```

### 2. Запустите все сервисы через Docker Compose

```bash
docker compose up -d
```

> **Важно:**
> Убедитесь, что Docker Engine запущен и порты 5432/5433, 9092, 8081 свободны.

### 3. Проверьте статус сервисов

```bash
docker compose ps
```

---

## Проверка работы

### 1. Получить заказ через HTTP API

```bash
curl -X GET http://localhost:8081/order/
```
_Подставьте реальный order_uid из предыдущего шага._

### 2. Проверить обработку несуществующего заказа

```bash
curl -X GET http://localhost:8081/order/does-not-exist
```

### 3. Перезапустить сервис и убедиться, что кеш восстанавливается

```bash
docker compose restart order-service
curl -X GET http://localhost:8081/order/
```

### 4. Открыть веб-интерфейс

Перейдите в браузере по адресу:
[http://localhost:8081](http://localhost:8081)

---

## Структура проекта

- `cmd/` — точка входа приложения и продюсера
- `internal/model/` — модели данных
- `internal/repository/` — работа с БД
- `internal/delivery/` — HTTP и Kafka обработчики
- `migrations/` — SQL-миграции для создания таблиц
- `Dockerfile`, `docker-compose.yml` — инфраструктура

---

## Остановка и очистка

```bash
docker compose down -v
```

---

## Примечания

- Для работы требуется установленный Docker Desktop.
- Все переменные окружения уже прописаны в docker-compose.yml.
- Для тестирования Kafka используется встроенный продюсер (`order-producer`).

---